避免魔术弦反射与常数

时间:2016-02-11 11:12:49

标签: c# reflection devexpress magic-numbers magic-string

基于以下两个例子,什么是避免魔法的更好方法?


已知关系
我们知道那个意味着

的类
    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)并且任何改变都会自动应用,但是当我有第二种情况时,我假设可能有这个属性。我无法使用show反射,因为即使代码仍然有效,属性名称也可能在其他类中更改。反思也增加了一些开销。

更新

该问题与DevExpress密切相关,因为他们在所有地方都使用“MagicStrings”而你无法更改基类

0 个答案:

没有答案