繁体   English   中英

c# 从依赖程序集隐式转换抛出 InvalidCastException

[英]c# implicit cast from dependent assembly throws InvalidCastException

假设我有两个项目:

项目1

一个类库

using System;

namespace Project1
{
    public class Foo
    {
        public Foo(object bar){
            Bar = (Bar)bar;
        }

        public Bar Bar { get;}
    }

    public class Bar{
        public string MyBar {get; set;}
    }
}

项目2

一个exe

using System;
using Project1;

namespace Project2
{
    public class BarTrip
    {
        public string MyFoo {get;set;}

        public static implicit operator Bar(BarTrip trip){
            return new Bar{ MyBar = trip.MyFoo };
        }
    }

    public static class Program{
        public static void Main(params string[] args){
            var trip = new BarTrip(){ MyFoo = "Aaron" };
            var foo = new Foo(trip);

            Console.WriteLine(foo.Bar.MyBar);
        }
    }
}

我希望当我运行我的 exe 时,一旦调用了Foo的构造函数中的转换操作,就会调用我在BarTrip定义的隐式转换运算符。

相反,我收到以下错误:

System.InvalidCastException: Unable to cast object of type 'Project2.BarTrip' to type 'Project1.Bar'.
   at Project1.Foo..ctor(Object bar)
   at Project2.Program.Main(String[] args) in D:\TestProjects\Project2\src\Project2\Program.cs:line 18

这个错误的原因是什么,如果 Project1 是一个黑盒 DLL,我可以做些什么来使这个场景可行?

编译它时,没有类型信息传递给Foo的构造函数的上下文,它只是object 那么隐式转换就没有解决。 显式转换失败,因为没有明确定义的路径。

这似乎是您的类库中定义的接口的完美案例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM