不同类实现的通用方法

时间:2018-08-27 00:31:37

标签: c# abstract-class

我们正在开发一个对数据库具有查找方法的应用程序,现在我项目中的大多数或某些类都将使用这些查找方法。我不想创建一个接口,因为这将迫使我的类在接口中实现所有方法。 因此,基本上,我想要一个具有查找方法的类,该方法将在我的大多数/某些方法中普遍使用。

例如 我有这些查询

class lookup
{
public bool getId();
public bool getName();
public bool getDescription();
}

我可能有只实现这些方法之一或不实现的方法

Class A
{
public bool getId()
{
do some work
}
}

class B
{
public bool getName()
{
do some work
}
}

class C
{
implements none of the methods
}

以此类推。

如何实现?我猜是一个抽象类,对吗

1 个答案:

答案 0 :(得分:1)

如果您不想拥有过多的接口,则其中一种选择是在抽象基类上具有默认实现:

public abstract class LookupBase
{
    public virtual bool getId()
    {
        throw new NotImplementedException();
    }
    public virtual bool getName();
    {
        throw new NotImplementedException();
    }
    public virtual bool getDescription();
    {
        throw new NotImplementedException();
    }
}

在您的具体实现中,只会覆盖您需要的内容:

public class LookupA: LookupBase
{
    public override bool getId()
    {
        //do some work
    }
}

如果像我的示例那样抛出异常,则在运行时中很明显未实现某些操作。但是,这只会在运行时发生,而不会在编译时发生。正如@Bagus Tesa提到的那样,此方法将需要大量的纪律和文档来了解每种情况下发生的情况。 就执行和更危险的方法而言,另一种更为安全的方法是拥有一个不执行任何操作/返回这些方法的默认对象的默认实现。它不会在运行时破坏您的应用程序,但会导致潜在的逻辑错误。