这个问题与我以前的帖子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