有可能做这样的事情吗?
Type MyType = typeof(SomeClass);
SomeMethod<MyType>();
SomeMethod
在哪里,
T SomeMethod<T>() where T : TypeOfSomeClass {
...
return NewInstanceOfT;
}
这当然会失败。我想存储一个类的 type ,然后使用该类型({{1}的值)作为方法的通用类型。
以下是一个用例:
MyType
class WindowService {
public static T CreateWindow<T>() where T : Window {
return (T)Activator.CreateInstance(typeof(T));
}
}
... (in some other class) ...
Type TypeOfWindow = typeof(MyConcreteWindow);
void CreateAWindow() {
Window Obj = WindowService.CreateWindow<TypeOfWindow>();
}
应该创建一个CreateWindow<T>
中存储的类的实例,只要它扩展了TypeOfWindow
。
答案 0 :(得分:0)
如果对您要完成的工作没有误解,可以这样进行:
public void MyMethod<T>(T t) where T : SomeClassOrInterface{ // Code }
根据Microsoft's Documentation(这是页面底部的示例之一)
编辑:如果要返回类型T的对象,则类似于这样
public T Whatever<T>(string values)
{
return /* code to convert the setting to T... */
}
在这种情况下,您可以在this question
中查看更多详细信息