1

可能重复:
为什么 C# 不允许静态方法实现接口?

我有这样的代码说我无法实现静态方法:

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)
    { ....

我可以得到一个接口吗?

4

3 回答 3

3

简短的回答:没有。

更长的答案:

这个概念真的没有任何意义。接口的重点是定义一个基本类型,该类型描述了各种实现的契约。我可以使用静态类型声明一个变量IFoo,它告诉编译器我不知道它在运行时会是什么类型,但我向你保证它会有一组特定的方法。- 因此,编译器将允许您调用这些方法,这些方法将在运行时解析。

静态方法总是绑定到一个且只有一个类,因此没有可引用的实例

于 2013-01-28T23:00:14.313 回答
2

不,接口不能有静态方法。实现接口的类需要将它们全部实现为实例方法。静态类不能有实例方法。

于 2013-01-28T22:58:16.830 回答
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());
于 2013-01-28T23:15:49.213 回答