Вопрос

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

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

Это было полезно?

Решение 2

Я закончил тем, что использовал отдельные перегрузки: (), (myvar), где t: u, и (myvar, myvar2), где t: v. Это сделало трюк, и мне повезло, потому что каждый параметр - это значение приложения, которое соответствует свойству объекта Анкет

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top