如何动态调用类(带构造函数)和它的方法?
本文关键字:方法 构造函数 何动态 动态 调用 | 更新日期: 2023-09-27 17:48:58
这两天我一直在阅读Reflection的例子,但我似乎不能把所有的东西拼凑起来,以满足我的需要。事实上,我以为我在使用反射,直到我注意到我的"使用系统"。"倒影"是灰色的。: -)
我有一个包含类名和其中包含的方法的xml文件。方法的顺序甚至名称都可以改变。一旦我读取它们,我希望能够执行它们。看起来很简单。
我有以下测试代码: // myClassName = "namespace.TransactionServices"
Type tb = Type.GetType(myClassName);
// Classes will always have the same constructor
object classInstance = Activator.CreateInstance (
tb,
new object[]
{
authorization.apiKey,
authorization.userName,
testData.servicesEndPoint
});
//Grab the method I want
//myMethodName = "GetVersion"
MethodInfo mymethod = tb.GetMethod(myMethodName);
// no parameters for this method call
object result = mymethod.Invoke(classInstance, null);
tb为空。我只是想努力获得创建类的正确API,但我甚至不知道我所拥有的其余内容是否有效。
有什么建议吗?
感谢编辑:添加命名空间。激活。CreateInstance返回构造函数未找到的错误。
类名必须是完全限定的(包括名称空间,很可能还包括程序集),以便解析它。如果您知道类在当前执行的程序集中,则可以使用assembly . getexecutingassembly ().GetType()
您确定指定了完整的类名,包括名称空间吗?如果没有命名空间,结果将为空。
对于GetType,您必须提供一个完全限定的名称。您可以使用
为现有对象获取它。MyObject.GetType().AssemblyQualifiedName;