我来自Java背景,我正在从c#中的等价物中寻找以下内容。
public interface Reader {
<T> T read(Class<? extends T> type);
}
这样我可以执行以下操作,约束参数并推断返回类型。
Cat cat = reader.read(Cat.class);
Dog dog = reader.read(Dog.class);
我希望这样的东西在c#中起作用,但我不确定它会不会。
public interface Reader {
T Read<T>();
}
而且这样做。
public class TypeReader : Reader {
public T Read<T>() {
Type type = T.GetType();
...
}
}
在c#中是否可以这样?
答案 0 :(得分:5)
是的,但您需要typeof(T)
,而不是T.GetType()
,并且:
Cat cat = reader.Read<Cat>();