C#如何使用两个参数设置属性

Nic*_*ick 4 c# properties

我需要设置一个带有两个 参数的属性,例如,在日志文件中附加文本。例子:

public string LogText(string text, bool Overwrite)
{
    get
    {
        return ProgramLogText;
    }
    set
    {
        ProgramLogText = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?(在上面的例子中,我需要传递我想写在文件中的文本和 1 来覆盖(0 作为附加文本的默认值),否则附加到一个文本文件,但是当我得到时,我只需要文本。)

Dmi*_*nko 5

您可以提取类-使用和属性实现您自己的class( struct)并添加一些语法糖TextOverwrite

 public struct MyLogText {
   public MyLogText(string text, bool overwrite) {
     //TODO: you may want to validate the text
     Text = text;
     Overwrite = overwrite; 
   }

   public string Text {get;}  
   public bool Overwrite {get;}   

   // Let's add some syntax sugar: tuples
   public MyLogText((string, bool) tuple)
     : this(tuple.Item1, tuple.Item2) { }

   public void Deconstruct(out string text, out bool overwrite) {
     text = Text;
     overwrite = Overwrite;
   }

   public static implicit operator MyLogText((string, bool) tuple) => new MyLogText(tuple);

   //TODO: You may want to add ToString(), Equals, GetHashcode etc. methods
 }
Run Code Online (Sandbox Code Playgroud)

现在你可以输入一个简单的语法

public class MyClass {
  ...
  public MyLogText LogText {
    get;
    set;  
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

并且很容易赋值(好像我们有一个具有2 个值的属性):

MyClass demo = new MyClass();

// Set two values in one go
demo.LogText = ("some text", true);

// Get two values in one go 
(string text, bool overWrite) = demo.LogText;
Run Code Online (Sandbox Code Playgroud)