2011-05-15 62 views
1

我正在做基於約定的編碼,如果你想要一個模塊,那麼你只需要從名爲IModule的接口派生。我會在運行時通過掃描找到所有的模塊,並將形成它的URL。約定優於配置,並使用戶自己的約定

在這種情況下,我必須註冊我的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))); 
} 

用戶可以給任何過濾和我需要採取行動據此..我怎樣才能做到這一點。我可以用表情或如果u有任何設計模式。這將是非常有幫助的

回答

1

在提供只讀名稱的接口中提供方法/屬性。

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

或者遵循Java的方法使用Servlet,並允許用戶指定您分析並允許覆蓋這樣一個XML文件(例如,<module name="CustomerModule" alias="Picky" />)。或兩者。

+0

我堅信認爲公約總比要求它們命名它更好。 1)讓你的程序可以理解。2)框架知道該怎麼辦..(如果他們忘記給出別名,該怎麼辦) – satish 2011-05-15 06:57:07

+1

我的設想是可選的。我同意默認應該是公約。您可以將Alias作爲擴展IModule(例如'IAliasedModule:IModule')提供,並在分配名稱時檢查它。或者要求'Alias'默認爲'null'。 – pickypg 2011-05-15 07:01:15