1

私はクラスを定義しました:

public class Parent : IParent
{
    public string ParentText
    {
        get { return "ParentText"; }
    }
}

public interface IParent
{
    string ParentText { get;}
}

public class Child : Parent, IChild
{
    public string ChildText
    {
        get { return "ChildText"; }
    }
}

public interface IChild : IParent
{
    string ChildText { get;}
}

コントロールをIChildインスタンスにバインドしようとすると、ChildTextプロパティに対してこれを実行できますが、ParentTextプロパティに対しては実行できません。子インスタンスにバインドしようとすると、両方のプロパティがバインド可能になります。データバインディングメカニズムが他のインターフェイスから継承されたプロパティを認識しないのはなぜですか?

編集:SharePoint初心者は正しいです:データバインディングは、コードで手動で定義すると機能します。ただし、BindingSourceコンポーネントを使用してデザイナーでデータバインディングを定義しようとしました。プロジェクトにオブジェクトソースを追加し、それをIChildインターフェイスにポイントすると、バインディングを定義するためにChildTextのみが表示されます。

問題をより適切に反映するために、質問のタイトルを更新しました。

4

2 に答える 2

0

これについて完全にはわかりませんが、ここに行きます:

IChildはIParentからのみ継承するため、ParentTextの実装(つまり、getアクセサー)を確認できません。これは、IParentではなくParentに存在するためです。したがって、IChildへのバインドはParentTextプロパティを継承しません。

実際、なぜインターフェイスにバインドしているのかはわかりません。子にバインドできないIChildへのバインドを達成するにはどうすればよいですか?

于 2009-07-22T14:57:15.780 に答える
0

フレームワークにバグがあり、説明されている問題が発生していると思います。関連する接続の問題は次のとおりです。

https://connect.microsoft.com/VisualStudio/feedback/details/431273/interface-inheritance-bug

于 2010-06-18T07:51:09.487 に答える