我使用
在C#中加载我的dllAssembly assembly = Assembly.LoadFrom(dllPath); // late binding
Type classType = assembly.GetType("Namespace.Classname");
object readerInterface = Activator.CreateInstance(classType);
但如何在没有
的情况下访问readerInterface中的方法/成员type.InvokeMember("Methodname", BindingFlags.InvokeMethod |
BindingFlags.Instance | BindingFlags.Public, null, readerInterface, null);
- >以readerInterface.write()的形式; ???
非常感谢!
迎接leon22
答案 0 :(得分:2)
假设您不能仅在项目中引用程序集C#...让C ++ / CLI对象实现一个接口并将其强制转换为该接口,然后正常使用它。
1)使用适当的方法在C#中声明您的接口
public interface IFoo
{
SomeMethod()
}
2)Implement the interface on your C++/CLI object
3)将您通过反射创建的对象强制转换为该接口
object readerInterface = Activator.CreateInstance(classType);
IFoo myFoo = readerInterfces as IFoo;
答案 1 :(得分:0)
在c#3中,您必须使用反射或让对象实现已知的接口。
在C#4中,您可以使用动态代替。 (仍然会使用反射,但语法更好)