【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();}
[解决办法]
楼主这么多五角星会问出这样的问题?
[解决办法]
用反射毫无压力,但是如果都知道类名了再去反射就没有意义了
[解决办法]
[解决办法]
- C# code
//求一个方法,可以用这个变量,new出对应的子类的对象