根据以下 2 个示例,什么是避免魔法的更好方法?
已知
的关系,我们知道类是什么意思
public string Notes
{
get { return notes; }
set { SetPropertyValue("Notes", ref notes, value); }
}
未知关系
我们不知道类(因为多个类可能有一个具有此名称的属性),或者即使该属性存在于此处
public void SomeStuffeChanged()
{
PropertyEditor propertyEditor = ((DetailView)View).FindItem("Anniversary") as PropertyEditor;
// do some stuff
}
我可以创建一个定义类/es,它将包含所有属性作为 const,这样我就可以避免我的属性的冗余,但维护这个定义也是可行的。
当我进行反思时,我会这样做,MemberName.GetMemberName<Contact>( x=> x.Anniversary)
并且任何更改都会自动应用,但是当我遇到第二种情况时,我只是假设可能存在此属性。我不能使用显示反射,因为即使代码仍然有效,属性名也可能在其他类中发生更改。反射也增加了一些开销。
更新
该问题与 DevExpress 密切相关,因为它们到处使用“MagicStrings”,您无法更改基类