我有一种情况,我需要一个变量是某种类型,但它也实现了一个特定的自定义接口.具体来说,我想要要求对象是a FrameworkElement,但它还实现了一个自定义接口,调用它IExample.
有什么方法可以通过声明IExample或实际变量来做到这一点?我正在设想这样的东西(伪语法):
public FrameworkElement<IExample> ChildView { get; set; }
Run Code Online (Sandbox Code Playgroud)
或者我想将它声明为接口本身的约束:
public interface IExample : FrameworkElement
Run Code Online (Sandbox Code Playgroud)
这些都可以在C#中使用吗?有没有可以完成同样事情的替代方案?基本上我只想要要求实例属于FrameworkElement也实现的子类IExample.
您可以在类级别使用泛型约束,然后将其应用于属性,因为属性本身无法直接定义约束.
public class SomeClass<T> where T : FrameworkElement, IExample {
public T ChildView { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
或者在界面上
public interface ISomeInterface<T> where T : FrameworkElement, IExample {
T ChildView { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
或者在方法级别,如果您希望将类型作为符合类型FrameworkElement和实现的参数IExample
public void SomeMethod<T>(T someParameter) where T : FrameworkElement, IExample
{ /*do something with instance someParameter*/)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |