나는 나중에 평가할 람다 식 형태로 몇 가지 속성을 전달하고자하는 클래스 MyDummyClass
을 가지고 있습니다. 그래서 나는람다 식으로 속성 이름 목록을 전달하는 가장 좋은 방법
public class MyDummyClass<T>
{
public MyDummyClass(Expression<Func<T, object>> property)
{
...
}
...
}
처럼 뭔가를 할 수 있습니다 .. 그리고 마우스 오른쪽, new MyDummyClass<Person>(x=>x.Name)
같은 클래스를 사용할 수 있습니까?
그러나 그렇다면 하나의 속성뿐만 아니라 속성 목록도 전달하고 싶습니다. 그래서
public class MyDummyClass<T>
{
public MyDummyClass(IEnumerable<Expression<Func<T, object>>> properties)
{
...
}
...
}
처럼 내 클래스를 써서 내가 같은 이 new MyDummyClass<Person>(new[] { x=>x.Name, x=>x.Surname })
처럼 사용하지만 불행히도 그 이 작동하지 않는 거라고! 대신 작성해야합니다
new MyDummyClass<Person>
(new Expression<Func<Person, object>>[] { x=>x.Name, x=>x.Surname});
하지만이 글은 약간 어색하지 않습니까? 물론 매개 변수을 사용하면이 코드는이 아닌 매개 변수를 사용하는보다 복잡한 코드 조각의 샘플 일뿐입니다. 누구나 이보다 더 좋은 옵션이 있습니까 ??
왜 'params'를 사용하지 않으시겠습니까? 가장 간단한 접근 방식이며 대리자 유형을 지정하지 않아도 작동합니다. –
나는 params에도 투표합니다. 그것은 문법을 매우 깔끔하게 유지할 것이고, 처음부터 당신이 원했던 배열을 사용합니다. – Umair
물론,이 간단한 예제에서 보면, 매개 변수를 사용할 수없는 좀 더 복잡한 곳에서 추출한 것입니다. 그 사이에 다른 선택적 매개 변수가 있으므로 작동하지 않습니다 ... 슬프게도 – Juri