约定优于配置和制定用户自己的约定

时间:2011-05-15 06:30:16

标签: c# asp.net-mvc design-patterns

我正在进行基于约定的编码,如果你想要一个模块,那么你必须从名为IModule的接口派生出来。然后我将在运行时通过扫描找到所有模块,并将从中形成URL。

在这种情况下,我必须通过删除例如Eg的惯例来注册我的URL与类的名称(类似于Asp.net MVC):如果你有一个CustomerModule我会删除模块并将你的URL注册为“/顾客”。但我想为用户提供更改该公约的灵活性。

if (instance.Name.EndsWith("Module")) -- this is filter
{
  int instanceCount = instance.Name.IndexOf("Module"); -- action
  routeCollection.Add(new RouteDefination(instance.Name.Remove(instanceCount)));
}

用户可以给出任何过滤器,我需要相应地采取行动..我该怎么做。我可以使用表达式或者你有任何设计模式。这将是非常有帮助的

1 个答案:

答案 0 :(得分:1)

在界面中提供一个提供只读名称的方法/属性。

public interface IModule
{
    /* other methods */
    string Alias { get; }
}

或者遵循Java的Servlet方法,并允许用户指定您解析的XML文件,并允许以这种方式覆盖(例如,<module name="CustomerModule" alias="Picky" />)。或两者兼而有之。