字符串文字转换为泛型 C# 的类型或命名空间

use*_*154 1 .net c#

我是 C# 新手,我正在尝试创建一个方法,该方法接受一个字符串,然后使用该字符串作为类型来实例化一个对象。

public void CreateRepository( string name) { 
      var repository = new Repository<name>();
}
Run Code Online (Sandbox Code Playgroud)

例如

显然我收到了编译器错误,但如何将字符串转换为命名空间?

dig*_*All 5

你可以这样做:

public void CreateRepository(string name)
{
    var type = Type.GetType(name);
    var genericRepositoryType = typeof(Repository<>).MakeGenericType(type);
    var repositoryObj = Activator.CreateInstance(genericRepositoryType );
    // N.B. repositoryObj variable is System.Object
    //      but is also an istance of Repository<name>
}
Run Code Online (Sandbox Code Playgroud)