为什么我不能将此方法标记为静态?

时间:2016-09-21 10:31:52

标签: c# polymorphism

我有一个BaseImageView(平台在这里不相关),它有一个属性Effect,它是一个command对象。

我希望我的所有命令都能实现IImageEffectstatic方法ApplyEffect,拍摄图像并返回带效果的图像。

但编译器抱怨我无法将接口方法标记为static,但这似乎是逻辑选项(因为效果不需要状态信息)。

我问这个因为我需要100个效果对象才能将1个效果应用到100个不同的图像,而我可以通过传递类并调用静态方法,这将取消100个实例。

有没有办法可以使用静态接口,或者我可以传递类并让它调用该类型的静态ApplyEffect

1 个答案:

答案 0 :(得分:0)

我建议您创建一个实现静态方法的抽象类,就像您想要使用该接口一样。

看起来像这样

name

如果您不想从抽象类继承,请创建一个静态类来应用效果。

class Program
{

    static void Main(string[] args)
    {
        BaseImageView.ApplyEffect();
        // Or
        EffectClass.ApplyEffect();
    }

}

public abstract class EffectClass
{
    public static void ApplyEffect()
    {
        // Effect of awesomeness
    }
}

public class BaseImageView : EffectClass
{

}