从托管 C++ 调用方法动态链接库对象
我在 C# 中加载了我的 dll
Assembly assembly = Assembly.LoadFrom(dllPath); // late binding
Type classType = assembly.GetType("Namespace.Classname");
object readerInterface = Activator.CreateInstance(classType);
,但是如何在不使用
type.InvokeMember("Methodname", BindingFlags.InvokeMethod |
BindingFlags.Instance | BindingFlags.Public, null, readerInterface, null);
--> 的情况下访问 readerInterface 中的方法/成员?以 readerInterface.write() 的形式; ???
非常感谢!
问候莱昂22
I load my dll in C# with
Assembly assembly = Assembly.LoadFrom(dllPath); // late binding
Type classType = assembly.GetType("Namespace.Classname");
object readerInterface = Activator.CreateInstance(classType);
but how can I access to my methods/members in readerInterface without
type.InvokeMember("Methodname", BindingFlags.InvokeMethod |
BindingFlags.Instance | BindingFlags.Public, null, readerInterface, null);
--> in form of readerInterface.write(); ???
Thank you very much!
greets leon22
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
假设您不能只引用项目 C# 中的程序集...让 C++/CLI 对象实现一个接口并将其转换为该接口,然后照常使用它。
1) 使用任何合适的方法在 C# 中声明接口
2) 在 C++/CLI 对象上实现接口
3) 将通过反射创建的对象强制转换为该接口
assuming that you can't just reference the assembly in your project C#... have the C++/CLI object implement an interface and cast it to that interface, then just use it as normal.
1) declare your interface in C# using whatever methods are appropriate
2) Implement the interface on your C++/CLI object
3) cast the object that you created through reflection to that interface
在 c# 3 中,您必须使用反射或让对象实现已知的接口。
在 C# 4 中,您可以使用动态代替。 (仍将使用反射,但具有更好的语法)
In c# 3 you must use reflection or have the object implement a known interface.
In C# 4 you can use dynamic instead. (will still use reflection but with nicer syntax)