我有一些代码,看起来像这样
else if (oField.FieldType.IsClass)
{
//var t = oField.FieldType.new()
someObj.fill_data(t);
oField.SetValue(o, t);
}我不知道如何分配变量。我该怎么做呢?我没有办法知道类型可能是什么,所以编写FieldType.IsAssignableFrom(KnownType)不是一种解决办法。
发布于 2009-12-31 11:14:06
下面是一些示例代码:
class TypeTest
{
int m_parameter;
public TypeTest()
{
}
public TypeTest(int parameter)
{
m_parameter = parameter;
}
public int Param { get { return m_parameter; } }
}
//method1 - Using generic CreateInstance
TypeTest defConstructor = Activator.CreateInstance <TypeTest>();
//method2 - Using GetConstructor
ConstructorInfo c = typeof(TypeTest).GetConstructor(new Type[] { typeof(int)});
TypeTest getConstructor = (TypeTest)c.Invoke(new object[] { 6 });
//method3 - Using non-generic CreateInstance
TypeTest nonDefaultConstructor = (TypeTest)Activator.CreateInstance(typeof(TypeTest), 6);发布于 2009-12-31 10:51:13
试试Activator.CreateInstance
object t = Activator.CreateInstance(oField.FieldType);这里假设类型FieldType有一个默认的构造函数。
发布于 2009-12-31 10:53:34
也许你应该检查一下返回类型的Type.GetConstructor(...).Invoke(...)。
https://stackoverflow.com/questions/1983705
复制相似问题