可能重复:
Why Doesn’t C# Allow Static Methods to Implement an Interface?
我有这样的代码,说我无法实现静态方法:
public static class AuxiliaryHelper : IAuxiliaryHelper
{
/// <summary>
/// Writes the response.
/// </summary>
/// <param name="jsonObj">The json object that gets turned in JSON and written out.</param>
public static void WriteResponse(this object jsonObj)
{ ....
我可以为此获得一个界面吗?
答案 0 :(得分:3)
简答:否。
更长的回答:
这个概念没有任何意义。接口的要点是定义描述各种实现的契约的基本类型。我可以使用静态类型IFoo
声明一个变量,它告诉编译器我不知道它在运行时会是什么类型,但我保证它会有一组特定的方法。 / em> - 因此,编译器将允许您调用那些将在运行时解析的方法。
静态方法总是绑定到一个且只有一个类,所以没有实例可以引用。
答案 1 :(得分:2)
不,接口不能有静态方法。实现接口的类需要将它们全部实现为实例方法。静态类不能有实例方法。
答案 2 :(得分:0)
我注意到,您使用扩展名方法。也许这种变化可以帮助你。
元代码
public static class HelperExtensions
{
//Note the interface goes here
public static void WriteResponse(this IAuxiliaryHelper helper,
object jsonObj)
{
//omn nom nom
}
}
//somewhere else - usage
IAuxiliaryHelper h = new Foo();
h.WriteResponse(new JsonObject());