![](/img/trans.png)
[英]C# implicit cast from base class to extended (System.Reflection.Assembly)
[英]c# implicit cast from dependent assembly throws InvalidCastException
假设我有两个项目:
一个类库
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;}
}
}
一个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.