c# - C#如何使用两个参数设置属性
问题描述
我需要设置一个带有两个 参数的属性,例如,在日志文件中附加文本。例子:
public string LogText(string text, bool Overwrite)
{
get
{
return ProgramLogText;
}
set
{
ProgramLogText = value;
}
}
我该怎么做呢?(在上面的示例中,我需要传递要写入文件的文本和 1 以覆盖(0 作为附加文本的默认值),否则附加到文本文件,但是当我得到时,我只需要文本。)
解决方案
您可以提取类- 使用和属性实现您自己的class
( struct
)并添加一些语法糖:Text
Overwrite
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;
推荐阅读
- blender - Blender 2.8 渲染选项卡中不显示照明
- bash - 在 BASH 中使用带有函数的等待命令后不保留变量
- python - 使用 Python 作为 ETL 工具
- python - 如何使用获取请求将默认值传递给表单?
- django - 如何通过在 django 中传递 url 和用户名 var 来确认删除用户
- html - 如何在这个 Angular 6 index.html 中添加元描述?
- ruby-on-rails - 如何在 Github 上更新已删除的文件
- node.js - 错误:请求类型无效或未知(不是 Dialogflow v1 或 v2 webhook 请求)
- php - 带有端口的 IP URL 在 cURL PHP 中不起作用
- performance - 为什么我的 yarn install / yarn add 速度极慢?