interface IXXX { void Foo(); } class XXX : IXXX { public static void Foo() { Console.WriteLine("From XXX"); } } class Program { static void Main(string[] args) { XXX.Foo(); } }
编译器错误:XXX.Foo()不能实现接口成员,因为它是静态的.
解决方法
看到这个线程从
JoelOnSoftware描述了这个背后的原因.
基本上接口是消费者和提供者之间的契约,静态方法属于类,而不是类的每个实例.
关于SO的早期问题也涉及到完全相同的问题:
Why Doesn’t C# Allow Static Methods to Implement an Interface?