c# - 通用类和 Type.GetType()

标签 c# asp.net generics types

有点困惑,我有一个通用类

public abstract class MyClass<T> : UserControl
{

}

我有一个这样的类型

Type type = Type.GetType("Type From DB as String", true, true);

我想使用类型创建 MyClass 的实例...但这不起作用。

MyClass<type> control = (MyClass<type>)LoadControl("/UsercControl.ascx");

有什么想法吗????

最佳答案

像这样:

Type typeArgument = Type.GetType("Type From DB as String", true, true);
Type template = typeof(MyClass<>);
Type genericType = template.MakeGenericType(typeArgument);
object instance = Activator.CreateInstance(genericType);

现在您将无法使用它作为 MyClass<T>在调用方法方面,因为你不知道 T ...但是您可以使用一些不需要 T 的方法定义非泛型基类或接口(interface),并投向那个。或者您可以通过反射调用它的方法。

关于c# - 通用类和 Type.GetType(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3788225/

相关文章:

asp.net - 将我的网站与 BlogEngine.Net 集成

c# - 传递 HttpPost 参数时导航到外部 URL

java - 在 Java 中使用泛型和抽象数据类型

c# - 在从泛型派生的类集合中使用泛型基类

c# - Crystal 报表在 Visual Studio 2010 中不工作

c# - 即使未使用变量,是否始终会执行局部变量赋值?

javascript - 在数据列表中重复jquery datepicker

java - 未经检查的方法调用作为原始类型的成员

c# - IEnumerable Where() 和 ToList() - 它们的实际作用是什么?

c# - ASP.NET MVC 自定义 View 路由