[英]How to define a template in a looser way than interfaces in C#
假设我有一组从模板生成文档的类。 例如...
class CustomerInvoice
{
public satic string TemplatePath
{
get { return @"C:\Templates\InvoiceTemplate.doc"; }
}
public static DocumentType DocumentType
{
get { return DocumentType.WordDocument; }
}
public static void Create(Customer customer, int orderNumber)
{
//...
}
}
所有这些类共享相同的方法名称 ,但不一定是方法签名 。
例如,我可能有
CustomerInvoice.Create(Customer customer, int orderNumber);
DespatchNote.Create(Customer customer, int orderNumber, Warehouse warehouse);
PackingLabel.Create(int orderNumber);
......或者其他什么(努力想出合理的例子)。
OO中是否有一种机制,它以这种方式指定一组类具有哪些方法名称? 我真的想要有一种方法来强制执行一组相似对象的一致实现和命名,因此它们对于消费者来说更直观。 像这样的案例会被视为有效/有价值地使用任何此类技术吗?
不,没有构造。 静态方法尤其无法强制执行任何共性。 如果是接口,您可以使用Create(object)
或Create(T)
(对于在通用接口上定义的某些T),并使用单个参数来表示te状态。
一组相似对象的一致实现和命名,因此它们对消费者更直观
既然你在谈论确保你的API的公共接口符合某个系统,我认为不一定会有任何OOP结构会有所帮助。
然而,可能有用的是用于控制样式和设计的许多工具中的任何一种。 我正在考虑像StyleCop,FxCop和NDepend这样的东西,所有这些都允许创建自定义规则(带来不同程度的痛苦!)。 特别是,NDepend将允许您按照行设置代码查询语言规则
WARN IF Count == 0 IN SELECT METHODS WHERE NameIs "Create" AND IsStatic
如果任何特定类没有名为Create
的静态方法(任何签名),那么(应用于合适的命名空间)会发出警告
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.