Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向接口动态强制转换时InvalidCastException_C#_Reflection_F# - Fatal编程技术网

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