在什么情况下应该使用通用接口,有没有一般规则?
我的例子是一个简单的数据帧接口。有一个“用户数据”成员变量,允许实现附加任何需要与帧一起使用的特定于实现的数据。我不知道是否将其保留为对象类型(并要求他们进行强制转换),还是将接口设置为此单个成员的通用接口,以便编译器会捕获错误的用法。
如果它变为通用接口,则使用的血统也需要是通用的,以便将类型传递到下一级(如果这有意义)。对于这个单一成员似乎需要做很多工作,这就是我的问题所在。
谢谢!
在做出决策时需要考虑的问题:
将任何对象存储在这个数据成员中是否会导致错误?(例如,您是期望/要求一个字符串,还是一个整数就足够了?)
您预计会使用多少种不同类型的数据对象?它们是否有共同的接口或基类?
此类当前是否正在使用,并且更改它是否会破坏使用它的其他类?
在异构集合方面,泛型有些许不足。如果您的数据框对象将被组合成单个集合类型以传递,您可能会发现很难应用泛型。特别是在您提供的示例中,似乎没有一个所有“用户数据”都会继承自的基本类型,除了object。
事实上,在这些类型的问题中,您可能会发现自己定义了一个泛型接口和一个非泛型版本,只是为了可以通过多态地传递类型。
泛型功能强大且非常有用,但在您描述的示例中,我怀疑它们可能会带来更多麻烦。
object
参数的泛型版本吗,例如 List<object>
? - Mark ByersSystem.Object
被用作泛型类型参数时,这是一种代码异味。 - AaronaughtISomething<object>
存储到IList<ISomething<MyClass>>
中,即使MyClass显然是一个对象。为了解决这个问题,你经常需要一个非泛型的ISomething接口,以便能够创建异构集合。 - LBushkin