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を使用した検索結果の欠如は、何を検索するかを正確に知らないことが原因である可能性があります。