下面是从类对象中获取属性值的方法。我怎样才能通过传递类名字符串来实例化类。实例化后,我想使用在同一页面上可用的方法'LoadFromXmlData()'。这可以做到吗?使用反射实例化类并调用方法
private string GetPropertyValue(string propName, string className)
{
Class1 _Class1;
Class2 _Class2;
Class3 _Class3;
if (className.Equals("Class1"))
{
_Class1 = new Class1();
_Class1 = (Class1)Class1.LoadFromXmlData(typeof(Class1), myData.ToString());
return _Class1.GetType().GetProperty(propName).GetValue(_Class1, null).ToString();
}
else if (ActionClassName.Equals("TicketActionDef"))
{
_Class2 = new Class2();
_Class2 = (Class2)Class2.LoadFromXmlData(typeof(Class2), myData.ToString());
return __Class2.GetType().GetProperty(propName).GetValue(_Class2, null).ToString();
}
else
{
_Class3 = new Class3();
_Class3 = (Class1)Class1.LoadFromXmlData(typeof(Class3), myData.ToString());
return __Class3.GetType().GetProperty(propName).GetValue(_Class3, null).ToString();
}
}
我将如下加载我的DLL。在这之后我应该如何继续。请帮忙,我对反思很陌生。
Assembly assembly = Assembly.GetAssembly(typeof(MyAdapter));
MyAdapter currentEventObject = (MyAdapter)assembly.CreateInstance(className);
感谢
为什么这个可怕的命名风格?它使代码不可读。 – 2011-03-25 16:46:27
对于命名风格感到抱歉。如果有其他条件,我的实际功能会更大。我刚刚发布了一些示例函数,我试图实现 – San 2011-03-25 16:57:04
命名风格很常见,但是你想实现什么?我不明白你为什么使用反射。如果你必须处理大的if/else条件,你应该尝试找到更好的解决方案来解决你的问题。 – Zebi 2011-03-25 17:08:17