0
我有一个BaseImageView(平台在这里无关紧要),它有一个属性Effect
,这是一个command对象。为什么我不能将此方法标记为静态?
我想我所有的命令都实现了IImageEffect
,它有一个static
方法ApplyEffect
,拍摄图像并返回图像的效果。
但编译器抱怨我无法将接口方法标记为static
,但这看起来像逻辑选项(因为没有效果所需的状态信息)。
我问这个,因为我需要100名效果对象1日起适用于100幅不同的图像,而我可以逃脱传递类,并调用静态方法,这将废除了100个实例。
有没有一种方法我可以有一个静态接口,或者我可以传递一个类,并让它调用该类型的静态ApplyEffect
?
不行,接口成员不能是静态的。如果您称为“IImageEffect.ApplyEffect”,CLR如何知道您想要调用哪个实现? (有与泛型类型参数的静态接口成员的说法,但这是更加微妙。) –
@JonSkeet我会通过一个类来了'Effect'属性,然后调用'ApplyEffect'这个类的,所以它会成为'EffectClass .ApplyEffect'。然后它会知道我想调用它的具体课程。 – vrwim
对不起,如果没有问题*中的具体示例*,这很难理解。如果你只是想要一个总是做同样事情的静态方法,就把它放在一个类中而不是一个接口中...... –