나는 내 디자인 프로그램에서 필요한 모든 기능을 그룹으로 묶기 위해 외관 디자인 패턴을 사용하고 있습니다. 내 클래스 라이브러리 Company.Infrastructure.Repositories.Administration에서인터페이스 및 외관 디자인 패턴
내가 가진이 잘 나를 위해 일했다
[Pluggable("Default")]
public class AdminRepository : IAdminRepository
{
#region private members
#endregion
#region protected members
protected Membership _membership;
protected Permissions _permissions;
protected Application _application;
protected Profile _profile;
#endregion
public AdminRepository()
{
_membership = new Membership();
_permissions = new Permissions();
_application = new Application();
_profile = new Profile();
}
protected class Profile
{
public Profile() {}
public void ProfileMethod1(){}
public void ProfileMethod2(){}
}
protected class Membership
{
public Membership() {}
public User GetUser(Guid id)
{
using (var dc = new My_SdbDataContext())
{
var user = dc.aspnet_Users.Where(x => x.UserId == id).FirstOrDefault();
var membership = dc.aspnet_Memberships.Where(x => x.UserId == id).FirstOrDefault();
return Convert.ToEntity(user, membership);
}
}
public User GetUser(string userName)
{
using (var dc = new My_SdbDataContext())
{
var user = dc.aspnet_Users.Where(x => x.UserName == userName).FirstOrDefault();
var membership = dc.aspnet_Memberships.Where(x => x.UserId == user.UserId).FirstOrDefault();
return Convert.ToEntity(user, membership);
}
}
public IEnumerable<User> GetUsers(Guid applicationId)
{
var userList = new List<User>();
using (var dc = new My_SdbDataContext())
{
var users = dc.aspnet_Users.Where(x => x.ApplicationId == applicationId).ToList<aspnet_User>();
userList.AddRange((IEnumerable<User>) (from user in users
let membership = dc.aspnet_Memberships.Where(x => x.UserId == user.UserId).FirstOrDefault()
select Convert.ToEntity(user, membership)));
}
return userList;
}
}
etc...
}
. 그러나 우리는 DDD 모델로 이동했으며 WCF 서비스에서 AdminRepository (이전의 AdminFactory)에 계속 액세스하는 방법을 알아 내려고합니다.
액세스를 달성하기 위해 내 도메인 논리에 인터페이스를 리포지토리 클래스에 포함했습니다. 그러나, 내가 가진 것과 같은 Facade에 대한 인터페이스를 만드는 방법 (서브 클래스와 전체)에 대해서는 어떻게 확신 할 수 없는지 잘 모르겠습니다. 이것이 가능한가?
어떻게하면됩니까?