公共抽象方法还是接口?

时间:2012-08-15 19:03:22

标签: .net methods interface abstract

我有一个抽象类,上面有一个公共抽象方法。我想知道我是否应该只定义一个接口并让抽象类实现它。这里有一般的经验法则吗?目前它工作正常,但我想要注意OO约定。目前它的外观如下:

public abstract class MySuckyClass
{ 
    public bool TryGetMember(GetMemberBinder binder, out object result)
    {
        result = this.GetMember(binder.Name);

        if (result == null)
            return false;

        return true;
    }

    public abstract object GetMember(string memberName);
}

4 个答案:

答案 0 :(得分:2)

你问的是一个有不同答案的问题。可能会根据意见而有所不同。

就个人而言,我喜欢定义接口,然后使用抽象类提供一些预制功能。如果我需要提供不同的实现,这允许我返回界面,但在处理在多个实现中执行相同操作的方法/属性时节省了时间。

答案 1 :(得分:1)

惯例是使用抽象。在这方面,这意味着接口或抽象类。

如果您的代码按原样运行,请不要仅仅为了添加不需要的界面而更改它。

答案 2 :(得分:1)

这是从2003年开始的,但在我看来仍然如此

Recommendations for Abstract Classes vs. Interfaces

您可以在一个抽象类中定义构造函数,而不能在接口中。

答案 3 :(得分:0)

Cwalina Krzysztof写了一本名为“框架设计指南”的好书。如果我没记错的话,其中一条准则就是使用抽象类,如果你想让开发人员扩展你的类并使用接口则不然。