C# 向接口动态强制转换时InvalidCastException
我在程序集中定义了一个接口,如下所示:C# 向接口动态强制转换时InvalidCastException,c#,reflection,f#,C#,Reflection,F#,我在程序集中定义了一个接口,如下所示: namespace HelloWorlder { public interface IHelloWorld { string SayHello(); } } 在单独的程序集中,我有另一个类定义为: using HelloWorlder; public class HelloWorld : IHelloWorld { string IHelloWorld.SayHello() { return "H
namespace HelloWorlder
{
public interface IHelloWorld {
string SayHello();
}
}
在单独的程序集中,我有另一个类定义为:
using HelloWorlder;
public class HelloWorld : IHelloWorld {
string IHelloWorld.SayHello() {
return "Hello, world!";
}
}
现在尝试从F#Interactive调用此函数时,我得到一个无效的强制转换异常,下面是尝试使用此DLL的代码:
\I\u源目录__
#r“HelloWorlder.dll”
开放系统
开放系统。反射
开放HelloWorlder
让asm=Assembly.LoadFrom(\uuuuu SOURCE\u DIRECTORY\uuuuu+“\\HelloWorld.dll”)
让hwIns=asm.CreateInstance(“HelloWorld”):?>IHelloWorld
让res=hwIns.SayHello()
从我看来,它应该可以工作,作为一个额外的预防措施,您将看到我已经显式地实现了接口
IHelloWorld
。我猜我遗漏了一些东西,但我不明白为什么它会抛出强制转换异常。结果是,我实际上必须取消对象的绑定,而不是强制转换,然后它工作得很好
让hwIns=asm.CreateInstance(“HelloWorld”)|>unbox