在 Unity 中使用泛型... InvalidCastException
Posted
技术标签:
【中文标题】在 Unity 中使用泛型... InvalidCastException【英文标题】:Using generics in Unity ... InvalidCastException 【发布时间】:2011-02-07 03:38:08 【问题描述】:我的接口定义是: 公共接口 IInterface 其中 T:UserControl
我的班级定义是: 公共部分类 App1Control : UserControl, IInterface
我的 app.config 的统一部分如下所示:
<unity>
<typeAliases>
<typeAlias alias="singleton" type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager, Microsoft.Practices.Unity" />
<typeAlias alias="myInterface" type="MyApplication.IInterface`1, MyApplication" />
<typeAlias alias="App1" type="MyApplication.App1Control, MyApplication" />
</typeAliases>
<containers>
<container>
<types>
<type type="myInterface" mapTo="App1" name="Application 1">
<lifetime type="singleton"/>
</type>
</types>
</container>
</containers>
</unity>
应用程序运行良好,但以下代码给出了 InvalidCastException
container.Resolve<IInterface<UserControl>>("Application 1");
错误信息是:
无法将“MyApplication.App1Control”类型的对象转换为“MyApplication.IInterface`1[System.Windows.Forms.UserControl]”类型的对象
我相信我的代码中有一个小错误......但我无法弄清楚是什么。有什么想法吗?
【问题讨论】:
嗨 Miguel,我的 App1Control 的定义有误。当我将定义从 public partial class App1Control : UserControl, myInterface ..... 更改为 ...... public partial class App1Control : UserControl, myInterface来自 OP Sunny D 的评论:
我的 App1Control 的定义有误。当我从以下位置更改定义时,问题已解决:
public partial class App1Control : UserControl, myInterface<App1Control>
到:
public partial class App1Control : UserControl, myInterface<UserControl>
【讨论】:
以上是关于在 Unity 中使用泛型... InvalidCastException的主要内容,如果未能解决你的问题,请参考以下文章