我需要设置一个带有两个 参数的属性,例如,在日志文件中附加文本。例子:
public string LogText(string text, bool Overwrite)
{
get
{
return ProgramLogText;
}
set
{
ProgramLogText = value;
}
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?(在上面的例子中,我需要传递我想写在文件中的文本和 1 来覆盖(0 作为附加文本的默认值),否则附加到一个文本文件,但是当我得到时,我只需要文本。)
您可以提取类-使用和属性实现您自己的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)