【发布时间】:2011-09-26 08:46:47
【问题描述】:
我有一个函数,它返回相同类型的对象(查询结果),但没有共同的属性或方法。为了拥有一个通用类型,我使用了一个空接口作为返回类型,并在两者上都“实现”了它。
这听起来当然不对。我只能通过坚持希望有一天这些类会有一些共同点来安慰自己,我会将这种共同逻辑移到我的空界面中。然而我并不满意,我在考虑是否应该有两种不同的方法并有条件地调用 next。那会是更好的方法吗?
我还被告知 .NET Framework 使用空接口进行标记。
我的问题是:空界面是设计问题的强烈迹象还是被广泛使用?
编辑:对于那些感兴趣的人,我后来发现函数式语言中的可区分联合是我想要实现的完美解决方案。 C# 似乎对这个概念并不友好。
编辑:我就这个问题写了longer piece,详细解释了问题和解决方案。
【问题讨论】:
-
这些被称为marker interfaces,显然它们被广泛使用。
-
阅读此msdn.microsoft.com/en-us/library/ms182128%28v=vs.80%29.aspx(我认为需要不同的方法)
-
代码气味可以是一种很好的气味,在这种情况下它是好的吗?例如咖啡、华夫饼和培根
-
当你调用你的函数时,你是否已经从你给的参数知道什么样的对象正在返回?如果是这样,让多个函数返回正确的类型会更正确。
标签: c# design-patterns