【100分】一个简单问题,困扰了很久了,望指教!!!!!!!!
C# code
//举例,几个类似的类,都继承摸一个父类
class testA : father
{
string aa;
string aaa;
}
class testB : father
{
string bb;
string bbb;
}
//已知一个变量的值是这些子类的名字
string valStr = "testA";
//或者
string valStr = "testB";
//求一个方法,可以用这个变量,new出对应的子类的对象
------解决方案--------------------搞个工厂方法, 或者反射...
你这问题问的玄乎么?
father Factory(string clsName)
{
father ojb;
swith(clsName)
case "testA":
ojb=new testA();
break;
}
------解决方案--------------------C# code
string valStr = "testA";
Type t = Type.GetType("命名空间." + valStr, true);
object o = System.Activator.CreateInstance(t, true);
------解决方案--------------------
难道不是用反射?
------解决方案--------------------
楼上说的对
比如:
C# code
public static IData.IProgram CreateProgram()
{
string className = path + ".ProgramData";
return (IData.IProgram)Assembly.Load(path).CreateInstance(className);
}
------解决方案--------------------
使用反射吧 骚人.
------解决方案--------------------
------解决方案--------------------
lz你看是反射,你射吧
------解决方案--------------------
呵呵,反射
通过ClassName(string)得到Type,这个限于同一个Assembly中,如果跨Assembly则需要FullName
然后通过Type进行Activator.CreateInstance(Type)得到对象
------解决方案--------------------
------解决方案--------------------
可以考虑动态编译
A5B547B287E7.htmlhttp://topic.csdn.net/u/20120719/16/11DEC7B0-B43C-4F79-9C73-A5B547B287E7.html
------解决方案--------------------
------解决方案--------------------
老老实实用反射吧
------解决方案--------------------
up,不会
------解决方案--------------------
难道LZ有什么深意?
如果按照表面意思来看,应该很简单的.
还是我想的太多的了!
------解决方案--------------------
一个射的问题,困扰你这么久。。。。。。。
------解决方案--------------------
C# code
father f;
if( valStr == "testA")
{
f = new testA();
}
else if( valStr == "testB")
{
f = new testB();
}