次の 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」を使用しており、ベースクラスを変更できないためです