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

C# 字符串文字转换为泛型c的类型或命名空间#,c#,.net,C#,.net,我是c#新手,我正在尝试创建一个方法,该方法接受一个字符串,然后使用该字符串作为类型实例化一个对象 public void CreateRepository( string name) { var repository = new Repository<name>(); } public void CreateRepository(字符串名称){ var repository=新存储库(); } e、 g 显然,我遇到了编译器错误,但如何将字符串转换为命名空间?您可

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

public void CreateRepository( string name) { 
      var repository = new Repository<name>();
}
public void CreateRepository(字符串名称){
var repository=新存储库();
}
e、 g


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

您可以通过以下方式执行此操作:

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>
}
public void CreateRepository(字符串名称)
{
var type=type.GetType(名称);
var genericRepositoryType=typeof(存储库);
var repositoryObj=Activator.CreateInstance(genericRepositoryType);
//注意:repositoryObj变量是System.Object
//但这也是一个存储库的距离
}

您可以这样做:

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>
}
public void CreateRepository(字符串名称)
{
var type=type.GetType(名称);
var genericRepositoryType=typeof(存储库);
var repositoryObj=Activator.CreateInstance(genericRepositoryType);
//注意:repositoryObj变量是System.Object
//但这也是一个存储库的距离
}

为什么要这样做?为什么需要从字符串创建类型,以及以后要对结果做什么?为什么要这样做?为什么需要从字符串创建类型,以及以后要如何处理结果?