在多个类上构建字符串的最佳方法是什么

iro*_*man 0 .net c#

我有一种情况,我需要在整个过程中建立一个消息.在此过程中,有几个函数和类,此消息必须收集信息.构建此消息的最佳方法是什么?

例:

public class process{
   public StringBuilder message = new StringBuilder();

   private void DoStep1
   {
      AddNote("start");

      var p2 = new process2();
      p2.DoStuff();

      var p3 = new process3();
      p3.DoStuff();

      SendEmailMethod(message);
   }

   private void AddNote(string msg)
   {
      //do stuff
      message.Append(msg);
   }
}

public class process2{
   public void DoStuff()
   {
      //need to append msg to that variable
   }

}

public class process3{

   public void DoStuff()
   {
      //need to append msg to that variable
   }

}
Run Code Online (Sandbox Code Playgroud)

Szy*_*mon 6

您可以将初始化传递StringBuilder给其他类中的所有这些方法.

public class process{
   public StringBuilder message = new StringBuilder();

   private void DoStep1
   {
      AddNote("start");

      var p2 = new process2();
      p2.DoStuff(message);

      var p3 = new process3();
      p3.DoStuff(message);

      SendEmailMethod(message);
   }

   private void AddNote(string msg)
   {
      //do stuff
      message.Append(msg);
   }
}

public class process2{
   public void DoStuff(StringBuilder stringBuilder)
   {
      //need to append msg to that variable - use stringBuilder
   }

}

public class process3{

   public void DoStuff(StringBuilder stringBuilder)
   {
      //need to append msg to that variable - use stringBuilder
   }

}
Run Code Online (Sandbox Code Playgroud)

您应该记录那些他们期望初始化的类,StringBuilder或者如果它为null则抛出异常.

public class process3{

   public void DoStuff(StringBuilder stringBuilder)
   {
      if (stringBuilder == null)
          throw new ArgumentException("stringBuilder must be initialised");

      //need to append msg to that variable - use stringBuilder
   }

}
Run Code Online (Sandbox Code Playgroud)