Ich habe eine Service Data Access Layer erstellt, wo es mehrere Datenbanken gibt, wo Daten herkommen müssen.Wie kann man das Strategy Pattern mit zwei Schnittstellen richtig implementieren?
Mir ging es gut mit einer Datenbank, in der ich die memberRepository
definierte, die Elementdetails enthielt. Jetzt muss ich jedoch sessionbezogene Details abrufen, die in einer anderen Datenbank gespeichert sind.
OprationContracts:
IMemberServices
enthältGetLoggedInBuddies(int profileID);
ISessionServices
enthältGetProfileIDFromSessionID(string sessionID);
Mein Serviceklasse:
public class MemberService : IMemberService, ISessionServices
{
#region Strategy pattern configuration
//
// Member repo
//
private MemberRepository memberRepository;
public MemberService()
: this(new MemberRepository())
{ }
public MemberService(MemberRepository memberRepository)
{
this.memberRepository = memberRepository;
}
//
// Session repo
//
private SessionRepository sessionRepository;
public MemberService() : this(new SessionRepository()){}
public MemberService(SessionRepository sessionRepository)
{
this.sessionRepository = sessionRepository;
}
#endregion
/// <summary>
/// Session-related details are maintained in the Secondary database
/// </summary>
/// <param name="sessionID"></param>
/// <returns></returns>
public int GetProfileIDFromSessionID(string sessionID)
{
int sessionProfileID = sessionRepository.GetProfileDetailsFromSessionID(sessionRepository);
return sessionProfileID;
}
/// <summary>
/// Try profileID = 1150526
/// </summary>
/// <param name="profileID"></param>
public void GetLoggedInBuddies(int profileID)
{
memberRepository.GetLoggedInBuddies(profileID);
//return memberRepository.GetLoggedInBuddies(profileID);
}
Das Problem ist, dass in den // Session Repo
Abschnitt, da ich bereits einen Konstruktor definiert habe. Ich verstehe das.
Also im Grunde in jeder Methode mag ich wie etwas tun müssen,
MemberService useSessionRepo = new MemberService(SessionRepository);
useSessionRepo.GetProfileDetailsFromSessionID(...);
MemberService useMemberRepo = new MemberService(MemberRepository);
useMemberRepo.GetLoggedInBuddies(...);
Nur eine Hand dieses zusammen setzen.
Danke.
Ist es eine Antwort oder Frage? Markiere es, wenn es antwortet. – AlexT