C#通用条件where子句

时间:2013-05-09 21:14:31

标签: c# generics

我想知道是否可以在where子句中引入条件。例如,如果我有两个泛型:

    public static Y Convert<T, Y>(T itemToConvert)
        where T : IDataTypeConverter, new()
        where Y : IDataTypeConverter2, new()
    {
    }

    public static Y Convert2<T, Y>(T itemToConvert)
        where T : IDataTypeConverter2, new()
        where Y : IDataTypeConverter, new()
    {
    }

如何将它们加入一个?

谢谢!

3 个答案:

答案 0 :(得分:2)

使两个数据类型转换器都从同一接口继承。然后在where子句中使用该接口。

答案 1 :(得分:2)

我想你想要的是......

public interface IDataTypeConverterBase
{}

public interface IDataTypeConverter : IDataTypeConverterBase
{}

public interface IDataTypeConverter2 : IDataTypeConverterBase
{}

public static Y Convert<T, Y>(T itemToConvert)
    where T : IDataTypeConverterBase, new()
    where Y : IDataTypeConverterBase, new()
{
}

答案 2 :(得分:0)

不,每个类型参数只能有一个 where 子句。 20.7 Constraints