【发布时间】:2012-03-21 17:55:42
【问题描述】:
我在 VB.Net 中有一个通用函数。我也有两个类,称为A 和B。是否可以允许对我的函数进行通用约束以允许类型为 A 或 B 类? A 和 B 类不共享除 object 之外的任何基类。
【问题讨论】:
-
听起来不是很通用,为什么不直接声明一个重载的方法。
标签: .net vb.net generics constraints
我在 VB.Net 中有一个通用函数。我也有两个类,称为A 和B。是否可以允许对我的函数进行通用约束以允许类型为 A 或 B 类? A 和 B 类不共享除 object 之外的任何基类。
【问题讨论】:
标签: .net vb.net generics constraints
这是不可能的。我建议你用两个类的通用 API 创建一个接口,让两个类都实现这个接口。
【讨论】:
当我最近专注于学习 Java 时,我发现这完全是可能的。声明泛型参数时,可以使用“&”运算符组合多个泛型约束。它看起来如下:
public class List<T extends IInterface1 & IInterface2> {
...
}
我对此的第一个想法是我希望在 .NET 中使用它:-)
【讨论】:
void foo<T>() where T : IEnumerable, new() 要求 T 是可枚举类型并具有默认构造函数。但是没有办法说它必须是可枚举的或具有默认构造函数。可惜,因为它实际上在几种情况下都很方便。