C# 是否可以泛化元组属性?

C# 是否可以泛化元组属性?,c#,oop,C#,Oop,我正在寻找一种方法,使一个Tuple属性可以接收多个Tuple,如Tuple,Tuple。下面的代码是我正在尝试的一个示例: public class A { public virtual Tuple Condition { get; set; } } public class B: A { public override Tuple<int, string> Condition { get;

我正在寻找一种方法,使一个Tuple属性可以接收多个Tuple,如
Tuple
Tuple
。下面的代码是我正在尝试的一个示例:

public class A
{
    public virtual Tuple Condition
    {
        get;
        set;
    }
}

public class B: A
{
    public override Tuple<int, string> Condition
    {
        get;
        set;
    }
}

不,您不能,因为签名不匹配

<> P>你可以考虑的最接近的模式是:

public class A
{
    public object Condition
    {
        get;
        set;
    }
}

public class B: A
{
    public void SetCondition(Tuple<int, string> condition)
    {
        base.Condition = condition;
    }
}
公共A类
{
公共对象条件
{
得到;
设置
}
}
B级:A级
{
公共void SetCondition(元组条件)
{
基本条件=条件;
}
}

然而,你所寻找的意义有限。哪种方式可以使用“通用”元组?此时,最好考虑一个对象。

这种方法有两个问题:

  • Tuple
    Tuple
    是不同的类,方法/属性重写不支持返回类型中的多态性

  • 即使他们这样做了,
    Tuple
    也不会从
    Tuple
    继承,所以它无论如何也不会工作


  • 您需要将
    virtual
    属性声明为
    object
    ,然后在需要时来回转换。或者,您可能需要考虑您的
    条件
    属性真正代表了什么;也许定制类会比Tuple更灵活。

    将Tuple作为API的一部分公开很少是个好主意。你到底想做什么?
    public class A
    {
        public object Condition
        {
            get;
            set;
        }
    }
    
    public class B: A
    {
        public void SetCondition(Tuple<int, string> condition)
        {
            base.Condition = condition;
        }
    }