是否可以调用传递给泛型方法的类型的方法?
类似的东西:
public class Blah<T>
{
public int SomeMethod(T t)
{
int blah = t.Age;
return blah;
}
}
答案 0 :(得分:19)
如果有某种类型将T约束为:
,则可以public int SomeMethod(T t) where T : ISomeInterface
{
// ...
}
public interface ISomeInterface
{
int Age { get; }
}
类型可以是基类 - 但必须有某些让编译器知道肯定会有Age
属性。
(在C#4中你可以使用动态类型,但我不会这样做,除非它是一个特别“特殊”的情况,实际上是合理的。)
答案 1 :(得分:9)
扩展Jon的答案。
另一种方法是对问题采取功能性方法
public int SomeMethod(T t, Func<T,int> getAge) {
int blah = getAge(t);
...
}
答案 2 :(得分:3)
怎么样:
public class Blah
{
public int SomeMethod(Func<int> get_age)
{
int blah = get_age();
return blah;
}
}