当前位置: 代码迷 >> C# >> 动态生成某个类的范例,并调用该类的方法
  详细解决方案

动态生成某个类的范例,并调用该类的方法

热度:194   发布时间:2016-05-05 05:26:28.0
动态生成某个类的实例,并调用该类的方法
现有一组类class a,b,c....都实现了一个方法getData()

要求实现一个方法void work(string className),能够根据传入的className动态的生成该类的实例,并调用该类的getData方法

比如,我调用的时候是work("a")

那么work方法内的效果等同于:
a classA=new a();
a.getData();

求解该如何实现?
------解决思路----------------------
搜一搜:反射
只要知道命名空间,类名,属性名,函数名,都是可以通过反射调用的
可以实例化,也可以赋值,取值或执行函数
------解决思路----------------------

            dynamic ss = Activator.CreateInstance("dll名称", "classname");
            ss.getData();

如果实现了接口:

var ss = Activator.CreateInstance("dll名称", "classname") as IGetData;
ss.getData();

最后如果都不明白,就看http://blog.csdn.net/tonglian/article/details/2271066
------解决思路----------------------
类名必须是包含空间的全名, 请看示例
CreateAndDo("CSDemo.ttt", "getData");
private void CreateAndDo(string classfullname, string methodname)
{
    Type t = Type.GetType(classfullname);
    if (t != null)
    {
        object val = Activator.CreateInstance(t);
        MethodInfo method = t.GetMethod(methodname);
        if (method != null)
        {
            method.Invoke(val, new object[] { });
        }
    }
}
public class ttt
{
    public void getData()
    {
        Debug.WriteLine("getdate");
    }
}
  相关解决方案