1

根据以下 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”,您无法更改基类

4

0 回答 0