最近我采用了存储库/服务设计模式来处理我的 MVC 4 项目中的对象。
这绝对是一个很好的举措,但我发现了一个问题 :) 现在这可能取决于我对模式的应用,所以我想我会把它放在那里,看看是否有人可以提出适合的解决方案或设计模式我的需要。
我有一个存储库和一个服务来处理自定义用户。这非常适合获取用户和执行任何用户方法。但是,在我转向存储库/服务设计模式之前,我有一个静态类来处理所有与用户相关的方法。
其中一种方法是:
public static Profile CurrentUser()
{
// TODO: Need to replace the Profile session when any permissions are changed....
var companyId = HttpContext.Current.Session["CompanyId"].ToString();
if (HttpContext.Current.User.Identity.IsAuthenticated && !string.IsNullOrEmpty(companyId))
{
var userId = Membership.GetUser(HttpContext.Current.User.Identity.Name).ProviderUserKey.ToString();
var repository = new ProfileRepository(companyId);
return repository.Get(userId);
}
else
return null;
}
如您所见,如果特定用户已登录,此方法将返回他们的个人资料。如果未登录,则返回 null。
我的问题是该方法需要与服务和存储库分开,因为必须从任何控制器调用它,这就是我将其设为静态的原因。
为了解决这个问题,我创建了一个名为 ProfileContext 的类,而 CurrentUser() 是这个静态类中唯一的方法。
所以我的问题很简单。这将是处理 CurrentUser 方法的最佳方式,还是有另一种更好的解决方案?
干杯,/r3plica