将属性作为参数传递

我想为LoadFromXML加载和validation创建一个通用的辅助方法。 如果我加载的XML不完整,我确实希望它在没有抛出exception的情况下完全失败。 目前,我的代码看起来像这样(或多或少)

public override bool Load(XElement source) { return new List<Func> { i => this.LoadHelper(i.Element(User.XML_Username), ref this._username, User.Failure_Username), i => this.LoadHelper(i.Element(User.XML_Password), ref this._password, User.Failure_Password) //there are many more invokations of LoadHelper to justify this architecture } .AsParallel() .All(i => i.Invoke(source)); } private bool LoadHelper(XElement k, ref string index, string failure) { if (k != null && k.Value != failure) { index = k.Value; return true; } return false; } 

this._username是属性this.Username使用的私有成员变量。 这是我对这个问题的当前解决方案,但是我面临一个主要问题:因为我无法将属性本身传递给LoadHelper并且Action与属性不匹配:(,我正在绕过属性立即设定逻辑。

对于你自己的思考,在LoadHelper抽象之前,我的每个List<Func>的条目看起来像这样……

 i => ((Func)(k => { if (k == null || k.Value == User.Failure_Username) return false; { this.Username = k.Value; return true; } })).Invoke(i.Element(User.XML_Username)), 

问题:有没有人知道如何在不绕过财产的二传手逻辑的情况下做到这一点?

操作与属性不匹配

如果我读得正确,你尝试用“ Action ”替换“ref string index”,然后尝试传递Protperty。 关闭但不完全。 怎么样?

 private bool LoadHelper(XElement k, Action setter, string failure) { if (k != null && k.Value != failure) { setter(k.Value); return true; } return false; } 

然后

  i => this.LoadHelper(i.Element(User.XML_Username), s=>{this.Username = s}, User.Failure_Username), 

我有时想知道.Net支持一个带有两个成员的GetPer接口的iProperty(T)接口,以及自动换行字段和属性,以便可以传递一个iProperty(T)参数。场地或财产。

使用匿名方法,可以通过创建一个xProperty类来创建这样的东西,这个类的构造函数采用获取和设置属性所需的方法。 可以为任何希望其他类能够直接操作的属性定义类的实例。 但是,如果有标准接口,事情就会好得多。 不幸的是,我不知道现有的一个。