我想知道是否有可能在where子句中引入条件。例如,如果我有两种仿制药:C#泛型条件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()
{
}
如何将它们加入到一个?
谢谢!
所以你要限制的实例的类型转换为不一样的返回的实例的类型?或者你只是想为每个参数允许任何一种类型? – 2013-05-09 21:31:11
取决于我调用Convert或Convert2的情况,这两者之间的唯一区别是参数传递的顺序,两个场景,第一个(IDataTypeConverter,IDataTypeConverter2)和第二个(IDataTypeConverter2,IDataTypeConverter)取决于顺序参数Y取得并返回IDataTypeConverter(第二种方案)或IDataTypeConverter2(第一种方案)。 – user1624552 2013-05-09 21:36:49
根据你的说法,我认为@renan和kevin都正确回答了你的问题。它们不会将您的参数限制为IDataTypeConverter或IDataTypeConverter2。因此,您可以传入或。但是,不幸的是,这还允许您传入您似乎不关心的或。如果您关心限制用户传递相同的通用参数,则可以抛出运行时错误。 –
2013-05-09 22:05:55