使用配置文件中的字符串来初始化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的大部分优点。