在接口或变量上定义类约束
本文关键字:定义 约束 变量 接口 | 更新日期: 2023-09-27 18:17:05
我有一种情况,我需要要求一个变量是某种类型的,但它也实现一个特定的自定义接口。具体来说,我想要求对象是FrameworkElement
,但它也实现一个自定义接口,称之为IExample
。
是否有任何方法可以从IExample
的声明或实际变量中做到这一点?我设想这样的东西(伪语法):
public FrameworkElement<IExample> ChildView { get; set; }
或者我想将它声明为接口本身的约束:
public interface IExample : FrameworkElement
这些在c#中都是可能的吗?是否有替代方案可以完成同样的事情?基本上,我只是想要求实例是FrameworkElement
的子类,也实现了IExample
。
您可以在类级别使用泛型约束,然后将其应用于属性,因为属性本身不能直接定义约束。
public class SomeClass<T> where T : FrameworkElement, IExample {
public T ChildView { get; set; }
}
或者在接口上
public interface ISomeInterface<T> where T : FrameworkElement, IExample {
T ChildView { get; set; }
}
或者在方法级别,如果您想将类型作为符合FrameworkElement
类型和实现IExample
的参数
public void SomeMethod<T>(T someParameter) where T : FrameworkElement, IExample
{ /*do something with instance someParameter*/)