Функциональность производного типа в делегате
-
27-10-2019 - |
Вопрос
Я хочу написать метод с подписью 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 (используйте его).