![](/img/trans.png)
[英]IoC Container(Prism Unity) interface resolve and C# interface limitation
[英]Resolving interface as UIElement (Unity, PRISM, C#)
使用PRISM时,将事物统一连接的通常方法是定义一个接口,并使用该接口注册一个实现。 现在,我对视图有疑问。 场景很简单:
假设一个自定义视频控件允许设置播放命令。 该控件由一个简单的接口“ IPlayControlView”定义。 明显的问题是,当我解析此控件并将其添加到StackPanel
,它不起作用,因为我具有IPlayControl
而不是UIElement
。
我可以将其转换为UIElement
,因为我知道它是一个UIElement
。 但是有没有更好的方法,例如
public interface IPlayControlView : UIElement
这是行不通的,但也许其他方法可以解决问题。
这是一个普遍的问题,如果我使用接口解析视图,则每次都会遇到此问题。 也许不是这样做的方法,但我一直以为...之一。好吧,刚有了一个主意。 我将仅使用一个属性UIElement扩展IPlayControl并将其设置为对自身的引用。 因此,没关系,键入时回答了问题:-)
如果有更好的方法,我总是喜欢学习新事物。 也许是一个IUIElement?
克里斯
您在倒数第二段中所描述的方式就是我这样做的方式。 例如,如果我想将IShell
用作UIElement
(这很正常),则可以声明如下接口:
public interface IShell
{
UIElement GetView();
}
然后在我的实现中:
public partial class MyMainShell : UserControl, IShell
{
public UIElement GetView()
{
return this;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.