【发布时间】:2019-01-11 09:32:43
【问题描述】:
我有一些用于使用 WCF 传输数据的 DTO 对象。
public class Foo
{
//Many fields
}
WCF 服务方法返回这个对象,我有 valid 这个对象应该为空的情况。
我想使用 null 对象模式返回一些东西而不是 null 以使这段代码更清晰。
所以,我将其实现为:
public interface IFoo
{
//empty
}
public class NoFoo : IFoo
{
//empty
}
public class Foo : IFoo
{
public static IFoo NoFoo { get; } = new NoFoo();
//Many fields
}
在空检查之外使用 Foo 类不需要 IFoo。
但我觉得空界面肯定是一种代码味道。但是如果我将Foo 的所有(或任何)成员添加到IFoo,这些成员将永远不会被使用。因为接口仅用于空对象模式。
所以,我不明白,在这种情况下正确的方法是什么?
【问题讨论】:
-
它被称为标记接口,然而这是各种重复
-
我知道它是怎么调用的,它是关于空对象模式的。因此,从标记到空对象本身的可能异常已经打破了一些规则。这就是我问的原因。
-
“空对象”并不意味着“空接口”。它只是意味着“一个在语义上等同于 nothing 的对象值”。
-
你考虑过可选吗?这对您的问题有意义吗?
标签: c# interface null-object-pattern