這個問題與我以前的帖子Here有關。基本上,我想注入DAO成一個實體,即C#代理和var關鍵字
public class User
{
IUserDAO userDAO;
public User()
{
userDAO = IoCContainer.Resolve<IUserDAO>;
}
public User(IUserDAO userDAO)
{
this.userDAO = userDAO;
}
//Wrapped DAO methods i.e
public User Save()
{
return userDAO.Save(this);
}
}
在這裏,如果我在我的DAO自定義的方法,然後我基本上都包起來的實體對象。所以,如果我有一個IUserDAO.Register(),我將不得不創建一個User.Register()方法來包裝它。
最好是創建一個代理對象,將DAO中的方法動態分配給User對象。所以,我可能有一些看起來像這樣:
var User = DAOProxyService.Create(new User());
User.Save();
這意味着,我可以保持用戶實體適合於通過線路傳輸數據的非常愚蠢的班,但也奇蹟般地給它一堆DAO方法。
雖然這是我的安慰區,但我想知道我需要做些什麼?我可以使用Castles動態代理嗎? C#編譯器也能夠應對這一點並瞭解動態添加的方法嗎?
請隨時讓我知道這是否是無稽之談。
編輯:
我們需要做它以某種方式宣佈DAOProxyService.Create()爲返回用戶對象怎麼辦 - 在編譯時。這可以用泛型來完成。
這不是真的,我想返回的不是一個User對象,而是一個帶有動態添加的UserDAO方法的User對象。由於這個類沒有在任何地方定義,編譯器不知道該怎麼做。
我基本上返回的是一個新的對象,看起來像:User:IUserDAO,所以我想我可以根據需要進行強制轉換。但是這似乎很混亂。
看起來像什麼,我尋找的是與此類似:Mixins
要與代理生成玩弄了一下,但生病回來這更好。無論如何看起來很有趣。 – Owen 2008-10-23 15:59:41