AutoMoq에서 제네릭 클래스의 속성을 매개 변수로 전달

아론 게이츠

내가하려는 것은 AutoFixture 및 Moq를 사용하여 리포지토리를 일반화하는 것입니다. 목록에 가짜 레코드를 추가하는 'add'라는 메서드가 있습니다. 목록을 레코드라고하며 클래스 전체에 적용됩니다. 일반 M은 조롱되는 모델입니다. 이 메서드는 'this'를 반환하므로 메서드를 연결할 수 있습니다.

public Repo<M> add(string prop, string val) {
    var a = fixture.Build<M>().With(m => m.GetProperty(prop), val).Create();
    records.Add(a);
    return this;
}

확장 클래스와 함께 (이 검색 SO를 찾았습니다) :

public static class MyExtensions
{
    public static object GetProperty<T>(this T obj, string name) where T : class
    {
        Type t = typeof(T);
        return t.GetProperty(name).GetValue(obj, null);
    }
}

내가 받고있는 오류는 "Ploeh.AutoFixture.dll에서 ArgumentException이 발생했습니다"입니다.

내 질문은 : 컴파일 타임에 모델을 알 수 없을 때 메서드의 매개 변수로 일반 개체의 속성을 어떻게 전달할 수 있습니까?

Arkadiusz K

With메소드에는 Expression<Func<T, TProperty>>매개 변수 가 필요 하지 않습니다 PropertyInfo.

문자열 대신 사용할 add방법을 변경할 수 있습니다 Expression<Func<T, TProperty>>.

public Repo<M> add<T>(Expression<Func<M, T>> propertyPicker, T val) 
{
   var a = fixture.Build<M>().With(propertyPicker, val).Create();
   records.Add(a);
   return this;
}

그리고 이것은 사용법입니다.

add(foo => foo.Name, "abc");

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

DryIoC는 제네릭 유형 매개 변수를 기반으로 개방형 제네릭 서비스의 생성자에 매개 변수를 전달합니다.

분류에서Dev

제네릭을 사용하여 매개 변수로 클래스 전달

분류에서Dev

Generics C # 매개 변수로 제네릭 개체의 속성을 전달하는 방법

분류에서Dev

클래스 생성자 C #에서 가변 개수의 매개 변수 전달

분류에서Dev

객체 클래스의 속성 인 생성자에 매개 변수 전달

분류에서Dev

Kotlin에서 클래스 속성을 함수 매개 변수로 전달할 수 있나요?

분류에서Dev

인수로 세 개의 인수가있는 클래스 변수를 매개 변수로 생성자에 전달

분류에서Dev

제네릭 클래스 생성자 참조에 유형 매개 변수를 전달하는 방법은 무엇입니까?

분류에서Dev

클래스의 속성을 속성을 평가할 수있는 함수에 매개 변수로 전달합니다.

분류에서Dev

추상 제네릭 클래스에서 파생 된 클래스가 자신을 제네릭 매개 변수로 사용하는지 확인하는 방법

분류에서Dev

매개 변수가 클래스의 매개 변수와 동일한 제네릭에 클래스 매핑

분류에서Dev

Spring RestTemplate : 제네릭 클래스에서 매개 변수 유형을 정의하는 방법

분류에서Dev

C # 캐스팅 된 속성을 매개 변수로 사용하여 제네릭 메서드 호출

분류에서Dev

매개 변수에 전달 된 유형을 기반으로 특정 컬렉션 인 제네릭 유형 반환

분류에서Dev

생성자에게 템플릿 매개 변수로 전달 된 클래스에서 상속 및 상속

분류에서Dev

제네릭 클래스를 확장하는 클래스의 제네릭 유형 매개 변수를 전달하지 마십시오.

분류에서Dev

다른 제네릭 클래스에서 유형 매개 변수로도 사용될 때 제네릭 유형을 추론 할 수 없습니다.

분류에서Dev

전달 된 매개 변수에 따라 클래스 속성 값 변경

분류에서Dev

매개 변수로 생성자 : 클래스의 제네릭을 함수로 추론

분류에서Dev

PHP에서 클래스의 함수에 매개 변수 전달

분류에서Dev

제네릭 클래스에 중첩 된 클래스를 C #의 형식 매개 변수로 사용

분류에서Dev

메소드에서 매개 변수로 제네릭 클래스 사용

분류에서Dev

IMappingAction을 구현하는 클래스에 매개 변수 전달

분류에서Dev

C #에서 클래스의 인스턴스를 매개 변수로 전달

분류에서Dev

기본 클래스를 사용하여 상속 구성 요소를 매개 변수로 메서드에 전달

분류에서Dev

매개 변수와 함께 함수를 매개 변수로 전달하고 제네릭 유형을 반환

분류에서Dev

Java-해당 클래스의 배열이 생성 될 때 클래스 생성자에 매개 변수 전달

분류에서Dev

슈퍼과 서브 클래스의 매개 변수에 전달?

분류에서Dev

제네릭 : 매개 변수화 된 컬렉션을 List addAll 메서드에 전달해보세요.

Related 관련 기사

  1. 1

    DryIoC는 제네릭 유형 매개 변수를 기반으로 개방형 제네릭 서비스의 생성자에 매개 변수를 전달합니다.

  2. 2

    제네릭을 사용하여 매개 변수로 클래스 전달

  3. 3

    Generics C # 매개 변수로 제네릭 개체의 속성을 전달하는 방법

  4. 4

    클래스 생성자 C #에서 가변 개수의 매개 변수 전달

  5. 5

    객체 클래스의 속성 인 생성자에 매개 변수 전달

  6. 6

    Kotlin에서 클래스 속성을 함수 매개 변수로 전달할 수 있나요?

  7. 7

    인수로 세 개의 인수가있는 클래스 변수를 매개 변수로 생성자에 전달

  8. 8

    제네릭 클래스 생성자 참조에 유형 매개 변수를 전달하는 방법은 무엇입니까?

  9. 9

    클래스의 속성을 속성을 평가할 수있는 함수에 매개 변수로 전달합니다.

  10. 10

    추상 제네릭 클래스에서 파생 된 클래스가 자신을 제네릭 매개 변수로 사용하는지 확인하는 방법

  11. 11

    매개 변수가 클래스의 매개 변수와 동일한 제네릭에 클래스 매핑

  12. 12

    Spring RestTemplate : 제네릭 클래스에서 매개 변수 유형을 정의하는 방법

  13. 13

    C # 캐스팅 된 속성을 매개 변수로 사용하여 제네릭 메서드 호출

  14. 14

    매개 변수에 전달 된 유형을 기반으로 특정 컬렉션 인 제네릭 유형 반환

  15. 15

    생성자에게 템플릿 매개 변수로 전달 된 클래스에서 상속 및 상속

  16. 16

    제네릭 클래스를 확장하는 클래스의 제네릭 유형 매개 변수를 전달하지 마십시오.

  17. 17

    다른 제네릭 클래스에서 유형 매개 변수로도 사용될 때 제네릭 유형을 추론 할 수 없습니다.

  18. 18

    전달 된 매개 변수에 따라 클래스 속성 값 변경

  19. 19

    매개 변수로 생성자 : 클래스의 제네릭을 함수로 추론

  20. 20

    PHP에서 클래스의 함수에 매개 변수 전달

  21. 21

    제네릭 클래스에 중첩 된 클래스를 C #의 형식 매개 변수로 사용

  22. 22

    메소드에서 매개 변수로 제네릭 클래스 사용

  23. 23

    IMappingAction을 구현하는 클래스에 매개 변수 전달

  24. 24

    C #에서 클래스의 인스턴스를 매개 변수로 전달

  25. 25

    기본 클래스를 사용하여 상속 구성 요소를 매개 변수로 메서드에 전달

  26. 26

    매개 변수와 함께 함수를 매개 변수로 전달하고 제네릭 유형을 반환

  27. 27

    Java-해당 클래스의 배열이 생성 될 때 클래스 생성자에 매개 변수 전달

  28. 28

    슈퍼과 서브 클래스의 매개 변수에 전달?

  29. 29

    제네릭 : 매개 변수화 된 컬렉션을 List addAll 메서드에 전달해보세요.

뜨겁다태그

보관