正确的面向对象技术的 c# 实践

标签 c# .net oop

我有一些 c# 代码已经运行了一段时间了..我不得不说,虽然我了解 OO 原则的基础知识,但显然有不止一种方法可以给猫剥皮(尽管我讨厌那个短语!)。

因此,我有一个基本抽象类作为基本数据服务类,如下所示(为便于阅读而进行了简化):

public abstract class dataservice
{
    public enum OutputType : int { XmlTOJson = 0, Xml = 1, Json=2 }

    protected object SomeDBcall(string StoredProcedure)
    {
        // Just assume we are using SQLclient/DB access..
        object SomeReturnObjValue = db.ExecuteScalar(cmd);
        return SomeReturnObjValue;
    {
}

.. 所以基本上我可能在抽象类中有一些基本的数据库检索/更新/删除调用.. 主要是因为我的应用程序中有任何数据库操作的基础。

所以现在我们有一个实现基类的类,在我的例子中是一个客户类:

public class Customer : dataservice
{
    Public String CustomerDoSomething(string SomeDataEtc)
    {
        // Ok, so again for simplicity sake, we are going to use the base class to 
        // call a DB retrieve 
        object ReturningObj = SomeDBcall("my stored procedure");
        return ReturningObj.ToString();
    }
}

所以我想我的问题是:上述方法“可以”使用吗?考虑到如果需要可以覆盖虚拟方法,但是在这种情况下,我只希望基类使用那些 protected 方法作为调用数据库操作的方法。

非常感谢任何清晰度/指导!

最佳答案

当然,它是“好的”,尽管我认为没有理由让基类成为抽象abstract 类非常适合实现一些通用逻辑,而将其余逻辑留给派生类来实现。但是,您没有抽象/虚拟方法,所以我不明白这里的意义。

关于正确的面向对象技术的 c# 实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10934419/

相关文章:

c# - 无法从 'string' 转换为 'system.collections.generic.list string'

c# - 'this'在C#语言中有什么用?

c# - 在运行时使用类型变量创建类型列表

c# - 使用文件上传 AJAX 发送帖子数据

c# - UWP StorageFolder 访问下载文件夹

asp.net - 如何提供对应用程序池身份的私钥访问?

oop - Matlab 中的依赖可观察属性。它有效吗?

java - 在我的 ArrayList 的 ArrayList 中,为什么对单个元素的所有操作都会影响所有其他索引?

php - 在类中包装 Shell 命令的模式

c# - 使用嵌套托管将 MVC5 View 作为字符串获取