1

我想知道是否可以在 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()
    {
    }

如何将它们合并为一个?

谢谢!

4

3 回答 3

2

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

于 2013-05-09T21:25:16.280 回答
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()
{
}
于 2013-05-09T21:28:32.780 回答
0

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

于 2013-05-09T21:22:10.753 回答