如何在.NET 3.5中进行动态对象创建和方法调用
创建上述类型的类的对象
string myClass = "MyClass";
,然后调用
string myMethod = "MyMethod";
On 该对象的代码看起来如何?
How does the code looks that would create an object of class:
string myClass = "MyClass";
Of the above type, and then call
string myMethod = "MyMethod";
On that object?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
Type.GetType(string)
< /a> 获取类型对象。Activator.CreateInstance(Type)
< /a> 创建一个实例。Type.GetMethod(string)
< /a> 检索方法。MethodBase.Invoke(object, object[] )
调用对象Example上的方法,但没有错误检查:
每一步都需要仔细检查 - 你可能找不到类型,它可能没有无参数构造函数,你可能找不到方法,您可能会使用错误的参数类型来调用它。
需要注意的一件事:Type.GetType(string) 需要类型的程序集限定名称,除非它位于当前执行的程序集或 mscorlib 中。
Type.GetType(string)
to get the type object.Activator.CreateInstance(Type)
to create an instance.Type.GetMethod(string)
to retrieve a method.MethodBase.Invoke(object, object[])
to invoke the method on the objectExample, but with no error checking:
Each step needs careful checking - you may not find the type, it may not have a parameterless constructor, you may not find the method, you may invoke it with the wrong argument types.
One thing to note: Type.GetType(string) needs the assembly-qualified name of the type unless it's in the currently executing assembly or mscorlib.
我创建了一个使用 .NET 简化动态对象创建和调用的库,您可以在 google code 中下载该库和代码: 后期绑定助手
在项目中,您将找到一个包含用法的 Wiki 页面,或者您也可以另请检查此 CodeProject 中的文章
使用我的库,您的示例将如下所示:
或者更短:
它使用流畅的界面,真正简化了这种操作。 我希望你会发现它很有用。
I've created a library which simplifies dynamic object creation and invocation using .NET you can download the library and the code in google code: Late Binding Helper
In the project you will find a Wiki page with the usage, or you can also check this article in CodeProject
Using my library, your example will look like this:
Or even shorter:
It uses a fluent interface, and truly simplifies this kind of operations. I hope you could find it useful.
下面假设一个对象具有公共构造函数和公共方法,该方法返回一些值但不带参数。
The following assumes an object with a public constructor and a public method that returns some value but takes no parameters.
假设您的类位于执行程序集中,您的构造函数和方法是无参数的。
Assuming that your class is in your executing assembly, your constructor and your method is parameterless.