首页 > 解决方案 > C#如何使用两个参数设置属性

问题描述

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

public string LogText(string text, bool Overwrite)
{
    get
    {
        return ProgramLogText;
    }
    set
    {
        ProgramLogText = value;
    }
}

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

标签: c#properties

解决方案


您可以提取类- 使用和属性实现您自己的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
 }

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

public class MyClass {
  ...
  public MyLogText LogText {
    get;
    set;  
  }
  ...
}

并且很容易赋值(好像我们有一个具有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;

推荐阅读