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
}


すべてのプロパティを const として含む定義クラスを作成できるので、プロパティの冗長性を回避できますが、この定義を維持することもできます。


私がリフレクションに行くとき、私はただMemberName.GetMemberName<Contact>( x=> x.Anniversary)行い、変更は自動的に適用されますが、2番目のケースがあるときは、このプロパティがあると仮定します。コードがまだ有効であっても、プロパティ名が他のクラスで変更されている可能性があるため、ショーリフレクションを使用できません。また、リフレクションの追加によるオーバーヘッドもあります。


アップデート

質問はDevExpressと強く関連しています.DevExpressは至るところで「MagicStrings」を使用しており、ベースクラスを変更できないためです

4

0 に答える 0