考虑以下类
public class Lorem
{
public double LoremsDouble { get; set; }
}
public class Ipsum
{
public Lorem IpsumsLorem { get; set; }
public Dolor IpsumsDolor { get; set; }
}
不,作为属性的元数据IpsumsDolor
,我想要一个属性,它说:属性与onIpsumsDolor
有关系。我知道,这听起来像是我的概念有问题,但我发誓不是!LoremsDouble
IpsumsLorem
例如,我可以通过在属性上添加字符串属性并通过反射使用它来做到这一点string RelatedObject
,string PropertyName
但是不幸的是,我绝对讨厌字符串。
边注
来自 WPF 和 XAML,其中属性通知通常通过字符串触发,例如
RaisePropertyChanged("LoremsDouble");
我正在使用表达式来使这种类型安全:
RaisePropertyChanged(() => LoremsDouble);
其中参数是 a Expression<Func<T>>
,最后我将它翻译回一个字符串,没有更多错误,如下所示:
protected void RaisePropertyChanged<T>(Expression<Func<T>> propertyExpression)
{
var body = (MemberExpression) propertyExpression.Body;
var propertyName = body.Member.Name;
...
}
旁注结束
好的,现在我希望,我可以执行以下操作
public class Ipsum
{
public Lorem IpsumsLorem { get; set; }
[RelatedProperty(() => IpsumsLorem.LoremsDouble)]
public Dolor IpsumsDolor { get; set; }
}
但显然,我不能因为(a)IpsumsLorem
实例化属性时没有对象,并且(b)表达式不是有效的属性参数。
您有什么好主意可以以类型安全的方式将一个属性与另一个属性值上的属性相关联吗?