gpt4 book ai didi

c# - 从基类继承字段的正确方法?

转载 作者:太空宇宙 更新时间:2023-11-03 23:46:04 25 4
gpt4 key购买 nike

下面的代码是否足够好,还是应该使用接口(interface)或抽象类之类的东西?

我有一些通用代码,但我没有看到抽象类或接口(interface)的原因。

此外,如果不探索或悬停在 BaseTask 上,就无法判断 serviceClient 来自 BaseTask。是否每个 Task1 和 Task2 中都有表示这一点的东西?

public class BaseTask
{
private string configValue1 = "abc";
private string configValue2 = "def";

public ServiceClient serviceClient = new ServiceClient(configValue1,configValue2);
}

public class Task1 : BaseTask
{
public void RunTask()
{
serviceClient.RunTask1();
}

}

public class Task2 : BaseTask
{
public void RunTask()
{
serviceClient.RunTask2();
}

}

public class BaseTask
{
private readonly string configValue1 = "abc";
private readonly string configValue2 = "def";

private readonly ServiceClient serviceClient = new ServiceClient(configValue1,configValue2);

public ServiceClient ServiceClient { get{ return serviceClient;} }
}

public class Task1 : BaseTask
{
public void RunTask()
{
ServiceClient.RunTask1();
}

}

public class Task2 : BaseTask
{
public void RunTask()
{
ServiceClient.RunTask2();
}

}

最佳答案

从架构上讲,我只会将 serviceClient 设置为只读属性。在风格上,我会遵循 .NET 的适当大小写约定:

private ServiceClient serviceClient = new ServiceClient(configValue1,configValue2);

public ServiceClient ServiceClient
{
get { return serviceClient; }
}

RunTask 设为虚拟也可能有意义,因为您展示的实现是相同的(并且它允许您在必要时在其他实现中覆盖它):

public virtual void RunTask()
{
serviceClient.RunTask1();
}

关于c# - 从基类继承字段的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27570148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com