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 回答