使用Type.GetType()函数从不同的命名空间中获取类的类型

时间:2011-11-03 12:51:56

标签: c#

我想调用一个类及其方法,并在运行时知道类的名称和方法名称。我想要调用的类是一个不同的项目ClassLibrary。 。要调用的类的命名空间我已经将它的引用添加到我当前的项目中。并编写了以下代码来调用。

Type CalledType = Type.GetType("ClassLibraryLocation." + ClassName);

MethodInfo info = CalledType.GetMethod(FunctionName);

Object new_obj = Activator.CreateInstance(CalledType);

Object retval = info.Invoke(new_obj, new object[] { "ABC" });
Console.WriteLine(retval);

//ClassLibraryLocation is an anather namespace for which the reference is added.

//ClassName is the name of the class present in the  ClassLibraryLocation  namespace

//FunctionName is the name of the function present in the  ClassName Class 

但Type.GetType()方法返回Null CalledType

请帮助

由于

2 个答案:

答案 0 :(得分:2)

除非类型位于Type.GetType或调用程序集中,否则

mscorlib需要程序集名称。

相反,您应该找到包含您的类型的Assembly实例(例如typeof(SomethingElse).Assembly),然后在其上调用GetType

答案 1 :(得分:1)

我正在使用以下功能执行调用

public static Object ExecuteBLMethod(string ClassName, string Method, object[] args)
    {
        Type _Class = Type.GetType("BusinessLayer." + ClassName + ", BL, Version=1.0.0.0, Culture=neutral, PublicKeyToken="xxxx-xx");
        if (_Class != null)
        {
            object obj = Activator.CreateInstance(_Class);
            if (obj != null)
                return _Class.InvokeMember(Method, BindingFlags.Default | BindingFlags.InvokeMethod, null, obj, args);
        }
        return null;
    }