C# 是否可以泛化元组属性?
我正在寻找一种方法,使一个Tuple属性可以接收多个Tuple,如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
。下面的代码是我正在尝试的一个示例:
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;
}
}