我们有一个C#类,它在MVC Web应用程序中保存用户的会话值。现在我想让这个类更通用。到目前为止,我们有会议的吸气剂和制定者,如
public class WebAppLogin
{
public static WebAppLogin Current
{
get; //Gets the current Login from the session
set; //Sets the current Login to the session
}
public UserObject User
{
get; //Gets the value from the session
set; //Sets the value to the session
}
//Method for the UserObject
public List<String> GetUserRoles()
{
//kind of magic stuff
return userroles;
}
}
通过这个类,我们可以像这样访问当前用户对象
WebAppLogin.Current.User
我想编写一个通用类,允许开发人员注册用户对象的类型,并在他们的项目中使用这种类型的对象。
我的方法是这样的
public class GenericLogin<T>
{
public static GenericLogin<T> Current
{
get; //Gets the current Login from the session
set; //Sets the current Login to the session
}
public T User
{
get; //Gets the value from the session
set; //Sets the value to the session
}
}
现在开发人员必须在他们想要使用它的任何地方写出User
的类型。
我的问题是,是否有一些模式或库(内置于.net或免费商用)允许我在User
注册Application_Start
的类型并使用此类型作为我的User
属性的返回类型?
这是我们非常严格的命名约定。 User
对象几乎总是实体类。我们最终会得到像
GenericLogin<ABC01_REGISTERED_USER>.Current.User;
这是我想要防止的。对此有什么解决方案吗?
答案 0 :(得分:2)
如果你知道启动时的类型,你可以派生出类:
public class UserLogin : GenericLogin<ABC01_REGISTERED_USER>
{ }
然后一直使用那个类。否则,你必须每次都提供类型名称,因为否则每次都不知道你想要使用那种类型。