Вы можете, если есть какой-то тип, ограничивающий T:
public int SomeMethod(T t) where T : ISomeInterface
{
// ...
}
public interface ISomeInterface
{
int Age { get; }
}
Вместо этого типом может быть базовый класс - но должно быть что-то , чтобы компилятор знал что определенно будет свойство Age
.
(В C # 4 вы можете использовать динамическую типизацию, но я бы не стал этого делать, если только это не была особо «особая» ситуация, которая действительно оправдывала это. )
Развертывание ответа Джона.
Еще один способ - использовать функциональный подход к проблеме.
public int SomeMethod(T t, Func<T,int> getAge) {
int blah = getAge(t);
...
}
Как насчет:
public class Blah
{
public int SomeMethod(Func<int> get_age)
{
int blah = get_age();
return blah;
}
}