멤버 식을 받아들이고 컴파일러에서 식의 혼합 속성 형식을 허용하지 않는 params 메서드를 작성했습니다. 여기혼합 된 속성 형식을 사용하는 멤버 식을 사용하는 C# params 메서드
public class MyClass<TEntity>
{
public MyMethod<TEntity> Column<TProp>(params Expression<Func<TEntity, TProp>>[] expressions)
{ ... }
}
public class Customer
{
property int Id {get; set;}
property string Name {get; set;}
property int Age {get; set;}
}
var mc = new MyClass<Customer>();
mc.MyMethod(c=>c.Id, c=>c.Age); // Works fine, using 2 int types
mc.MyMethod(c=>c.Id, c=>c.Name); // Results into a compile error, using int and string type mixed
내가 아는 내 코드는 키워드 배열을 PARAMS에서 컴파일러가 생성하는,하지만, 그 배열은 MyMethods의 과부하의 제비를 가진 PARAMS 키워드를 교체하고 증가시키지 않고, Expression<Func<TEntity,TProp>>
이 해결 될 수있는 타입이다 매개 변수 목록? 단일 TProp
을하지 않는 것으로
:
메서드 서명과 예제 코드는 호환되지 않습니다. 컴파일 가능한 예제가 있다면 도움이 될 것입니다. – nvoigt
대답은 다음과 같습니다. 당신이 제공하는 아이템에서 제네릭 타입이 다를 것이라고 기대할 때'params'로 작동하게 만들 수 없습니다. – MarcinJuraszek