c# - 代码重构,以消除代码重复

标签 c# .net

我具有以下类结构:

public class Result
{
   protected int Code {get; set;}
   protected List<string> Messages {get; set;} 
   protected Result ();

   public static Result Success (int code, List<string> messages)
   {
    Result result= new Result();
    result.Code=code;
    result.Messages=messages;
    return result;
   }

}

public class ResultWithName: Result
{
  protected ID {get; set;}

  protected ResultWithName ()
  {
  }

  public static ResultWithName Success (int code, List<string> messages, string name)
  {
    ResultWithName result= new ResultWithName();
    result.Code=code;
    result.Messages=messages;
    result.Name=name;
    return result;
  }

}


如果只有一个静态方法,但是有几个静态方法,这个问题就可以了,我很感兴趣如何拥有一个更简洁的优雅代码。
谢谢

最佳答案

使用参数定义构造函数,而不是在Success方法中内联设置属性。然后在继承链中调用每个属性时,在构造函数中设置属性。

public class Result
{
    protected int Code { get; set; }
    protected List<string> Messages { get; set; }
    protected Result(int code, List<string> messages)
    {
        Code = code;
        Messages = messages;
    }

    public static Result Success(int code, List<string> messages)
    {
        Result result = new Result(code, messages);
        return result;
    }

}

public class ResultWithName : Result
{
    protected string Name { get; set; }

    protected ResultWithName(int code, List<string> messages, string name) :
        base(code, messages)
    {
        Name = name;
    }

    public static ResultWithName Success(int code, List<string> messages, string name)
    {
        ResultWithName result = new ResultWithName(code, messages, name);
        return result;
    }

}

关于c# - 代码重构,以消除代码重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4097403/

相关文章:

c# - 如何在 XML 序列化后没有列表元素的包装器元素

.net 脚本语言

c# - 如何在 c# winforms 中的 app.config 文件上动态更新应用程序设置键值对

c# - 用于大型静态索引数据的最佳无服务器数据库?

c# - 索引器 c# 中的 System.StackOverflowException

c# - WCF 的独立应用程序

.net - 如何在应用程序中的每个 MessageBox 上放置断点?

c# - 如何创建交叉引用检查?

c# - 编译大型 C# 解决方案? (450 万行代码)

.net - 尝试使用 TdDataAdapter.Fill() (Teradata DataAdapter) 填充 DataTable 时出现 System.Net.Sockets.SocketException