![](/img/trans.png)
[英]Pass a class name (not an instantiated object) as method parameter during runtime
[英]Pass class name as parameter and build new object
我试图做一个函数,我可以通过一个类名或一个空对象,然后构建一个新函数并将其添加到列表中。 我尝试了几种在网上找到的不同方法,但是它似乎不能作为函数传递或制造对象使用,不适用于列表,也不能同时使用。
class Program
{
static void Main(string[] args)
{
Read("TestObject");
}
static void Read(string classname)
{
List<Object> listObject = new List<object>(); //Not sure what to do
typeOf(classname) n = new typeOf(classname)(); //Not sure what to do
listObject.Add(n);
}
}
public class TestObject
{
public string Col1 { get; set; }
public string Col2 { get; set; }
}
在这篇文章之后 ,使用:
public object GetInstance(string strFullyQualifiedName)
{
Type t = Type.GetType(strFullyQualifiedName);
return Activator.CreateInstance(t);
}
在linqpad中尝试此示例。 您缺少完全限定的类名称(在这种情况下,它将是“ UserQuery + test”)
void Main()
{
test tt = new test();
GetInstance(tt.GetType().ToString());
}
public object GetInstance(string strFullyQualifiedName)
{
var t = Type.GetType(strFullyQualifiedName).Dump();
var res = Activator.CreateInstance(t);
return res;
}
public class test{
public int id {get;set;}
public test(){}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.