我正在进行基于约定的编码,如果你想要一个模块,那么你必须从名为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)));
}
用户可以给出任何过滤器,我需要相应地采取行动..我该怎么做。我可以使用表达式或者你有任何设计模式。这将是非常有帮助的
答案 0 :(得分:1)
在界面中提供一个提供只读名称的方法/属性。
public interface IModule
{
/* other methods */
string Alias { get; }
}
或者遵循Java的Servlet方法,并允许用户指定您解析的XML文件,并允许以这种方式覆盖(例如,<module name="CustomerModule" alias="Picky" />
)。或两者兼而有之。