使用配置文件中的字符串来初始化generics类型
我上课了:
public class MyClass
我有一个我正在阅读的配置文件,比如说,类型为T
Guid
。
我怎么做,除了使用配置文件中的字符串而不是实际类型(而不是硬编码Guid
)?
MyClass = new MyClass();
您需要完全限定的类型名称:
var typeArgument = Type.GetType("System.Guid");
然后,您可以使用reflection来获取参数化类型:
var genericType = typeof(MyClass<>).MakeGenericType(typeArgument);
然后您可以通过以下方式实例化:
var instance = Activator.CreateInstance(genericType);
但我不确定你为什么要这样做,或者为什么它会在你的场景中有用。 由于使用这种技术,你永远无法与MyClass
交互,其中T
被定义为你在编译时指定的东西,你首先失去了使用generics的大部分优点。