0

このようなインターフェースを書こうとしています

public interface IPropertyGroupCollection
{
    IEnumerable<IPropertyGroup> _Propertygroups { get;}
}

public interface IPropertyGroup
{
    IEnumerable<IProperty<T, U, V>> _conditions { get; }
}

public interface IProperty<T, U, V>
{
    T _p1 { get; }
    U _p2 { get; }
    V _p3 { get; }
}

public class Property<T, U, V> : IProperty<T, U, V>
{
    //Some Implementation
}

_Conditionsの無数の定義に対してコンパイルエラーが発生し続けます。

私は何が間違っているのですか?アイデアは、実装クラスが一般的なプロパティバッグコレクションを提供することです

4

1 に答える 1

7

T、U、Vを宣言していないからです。

public interface IPropertyGroup<T, U, V>
{
    IEnumerable<IProperty<T, U, V>> _conditions { get; }
}

ジェネリックタイプも追加する必要がIPropertyGroupCollectionあります。

それらが同じ一般的な「テンプレート」から来たという事実にもかかわらず、IProperty<bool,bool,bool>は異なるタイプであることを忘れないでください。IProperty<int,int,int>のコレクションを作成することはできません。またはIProperty<T, U, V>のコレクションのみを作成できます。IProperty<bool, bool, bool>IProperty<int int, int>

アップデート:

public interface IPropertyGroupCollection
{
    IEnumerable<IPropertyGroup> _Propertygroups { get;}
}

public interface IPropertyGroup
{
    IEnumerable<IProperty> _conditions { get; }
}

public interface IProperty
{
}

public interface IProperty<T, U, V> : IProperty
{
    T _p1 { get; }
    U _p2 { get; }
    V _p3 { get; }
}

public class Property<T, U, V> : IProperty<T, U, V>
{
    //Some Implementation
}
于 2012-07-13T06:03:36.003 に答える