public interface IClassA
{
string Description { get; set; }
// more IClassA specific definitions
}
public interface IClassB
{
string Description { get; set; }
// more IClassB specific definitions
}
public class ClassA : IClassA
{
public string Description { get; set; }
}
public class ClassB : IClassB
{
public string Description { get; set; }
}
これは非常に単純化されたコードです。すべてのクラスにはINotifyPropertyChanged、単純化のための実装がありません。すべてのコードを適切に実装されているかのように監視してください。
Descriptionのベースインターフェイスに入れるIClassAことはまだIClassB検討できません。そのため、WPFのデータバインディングを介してバインドされたプロパティに興味がありました。これは、私が試したことです:dynamic
public class CustomClass
{
public dynamic Instance { get; set; }
// passed instance is a ClassA or ClassB object
public CustomClass(dynamic instance)
{
Instance = instance;
}
}
私のXamlにはTextBlock、DataContextがCutomClassオブジェクトに設定されているが含まれています。InstanceプロパティのタイプをたとえばIClassAに変更して適切に入力すると、すべてが期待どおりに機能します。しかし、そうではありませんdynamic。
<TextBlock Text="{Binding Instance.Description}" />
VS2012のXamlDesigner/ ReSharperは、次のように表示します。タイプ'object'のデータコンテキストでプロパティ'Description'を解決できません。
のタイプCodeInstanceとして記述されていますがdynamic。しかし、コードがコンパイルされたので、設計時の問題かもしれないと思いました。しかし、TextBlock残りは空のままです。
この場合の原理を誤解するかもしれませんが、dynamicわかりません。したがって、Googleを使用した検索結果の欠如は、何を検索するかを正確に知らないことが原因である可能性があります。
