在 C#.NET 中定义 getter,声明的正文不被接受
本文关键字:正文 声明 NET 定义 getter | 更新日期: 2023-09-27 18:33:42
请考虑以下代码:
[DataContract]
class QObject {
public QObject() { }
[DataMember(Name = "objectindex")]
public int ObjectIndex { get; set; }
[DataMember(Name = "datapoint")]
public int DataPoint { get; set; }
[DataMember(Name = "type")]
public string Type { get; set; }
[DataMember(Name = "data")]
public int[] Data { get; set; }
[DataMember(Name = "parameters")]
public string __Parameters {
get {
return this.__Parameters;
}
set {
Parameters = new Dictionary<string,string>();
Parameters.Add("key", "value");
}
}
public Dictionary<string, string> Parameters;
}
这对我来说似乎很好,但是当我想编译时,它会收到以下错误:
"QuartzService.NET.QObject.__Parameters.get"必须声明一个主体,因为它没有标记为抽象、外部或部分
奇怪的是,get已经宣布了一个身体。那么,如何解决这个问题呢?
你有没有注意到getter中的无限循环
public string __Parameters {
get {
return this.__Parameters;
}
.........
getter返回另一个变量而不是它自己。也许您想从参数返回一些内容。此外,您的设置器总是创建一个新字典并将相同的东西添加到其中。你想做什么?
尝试这样的事情
public string __Parameters
{
get { return this.recreate(); }
set
{
Parameters = parse(value));
}
}
public Dictionary<string, string> Parameters;
其中,解析函数接收字符串,将其分解并将其存储到字典中。 Recreate 函数使用字典重新创建字符串。
也这样做:
public Dictionary<string, string> Parameters = new Dictionary<String,String>();
这样您就不会意外地获得空指针,并且因为我认为您只需要一个字典。(当你解析一个新的字符串时,不要忘记清除它)。
您定义的getter很好地引入了递归调用。
public string __Parameters {
get {
return this.__Parameters;
}
}
尝试更改this.__Parameters;
private string _parameters
public string __Parameters {
get {
return this._parameters;
}
}