C# 字符串文字转换为泛型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 显然,我遇到了编译器错误,但如何将字符串转换为命名空间?您可
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
//但这也是一个存储库的距离
}
为什么要这样做?为什么需要从字符串创建类型,以及以后要对结果做什么?为什么要这样做?为什么需要从字符串创建类型,以及以后要如何处理结果?