Функциональность производного типа в делегате - PullRequest
1 голос
/ 14 июня 2011

Я хочу написать метод с подписью Expression<Func<T, bool>> Foo<T>(). Мой класс U наследуется от T. Я хочу включить в этот делегат специфичную для U обработку. Проблема в том, что T не может быть неявно преобразован в U. Есть ли способ, которым я могу получить доступ к U-специфическим свойствам в этом методе?

Осложнение: у меня также есть тип V: T, который я хочу обработать, поэтому я не могу просто воспользоваться дисперсией, заменив T в U в сигнатуре.

Ответы [ 2 ]

0 голосов
/ 24 июня 2011

В итоге я использовал отдельные перегрузки: (), (myVar), где T: U, и (myvar, myvar2), где T: V. Это помогло, и мне повезло, потому что каждый параметр - это значение приложения, соответствующее свойство объекта.

0 голосов
/ 14 июня 2011

Простой подход заключается в определении интерфейса, который T и U наследуют (используют его) от него.

...