C# 接口就像一个;过滤器类型;?
也许这是一个愚蠢的问题,但我想知道创建一个空接口作为“过滤器”类型是否是一个好的实践C# 接口就像一个;过滤器类型;?,c#,interface,C#,Interface,也许这是一个愚蠢的问题,但我想知道创建一个空接口作为“过滤器”类型是否是一个好的实践 例如:仅对实现所需/特定接口的对象执行某些操作?接口用于强制执行某些操作,例如每辆车都有轮胎、仪表板、喇叭功能。 所以这个CarObject类将被所有Car类继承,而CarObject类中函数的实现将被强制在继承它们的类中执行。因此,是的,它可以用作过滤器并根据需要添加功能。FXCop建议,有比使用过滤器更好的方法 有关更多详细信息,请参见这些答案 您的想法是正确的,这就是接口的用途,但您提到: 采取行动
例如:仅对实现所需/特定接口的对象执行某些操作?接口用于强制执行某些操作,例如每辆车都有轮胎、仪表板、喇叭功能。
所以这个CarObject类将被所有Car类继承,而CarObject类中函数的实现将被强制在继承它们的类中执行。因此,是的,它可以用作过滤器并根据需要添加功能。FXCop建议,有比使用过滤器更好的方法 有关更多详细信息,请参见这些答案
- 您的想法是正确的,这就是接口的用途,但您提到:
采取行动
这表明您想要执行某种方法,这甚至更好。在这种情况下,我建议这样的接口:
public interface IMyInterface
{
void MyAction();
}
然后,您可以对实现该接口的任何对象调用MyAction
显然,void
此处可以更改为您想要返回的任何类型,并且您可以使用符合您需求的任何参数:)
.认为“某些动作”仍然需要反射和类型转换。因此,这似乎不是完成任何事情的理想方式。在界面中定义“操作”,它就不是空的!对实现接口的任何对象调用该操作。只有一种情况下该操作有效。当将接口/空抽象类绑定到
ContentControl
的属性并在运行时交换实现时,我想最好定义“执行一些操作”。有些操作需要访问方法的某些属性,因此,在这种情况下,使用空接口不是一个好的做法。我想到的一个有效的花瓶是,如果您想将不同的泛型类放入同一个集合中,如列表集合
,并用例如类CarService:BaseService,MyInterface
,类HouseService:BaseService,MyInterface
,类StuffService:BaseService,MyInterface
。