注册返回类型

时间:2015-06-22 12:35:57

标签: c# generics return-type

我们有一个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;

这是我想要防止的。对此有什么解决方案吗?

1 个答案:

答案 0 :(得分:2)

如果你知道启动时的类型,你可以派生出类:

public class UserLogin : GenericLogin<ABC01_REGISTERED_USER>
{ }

然后一直使用那个类。否则,你必须每次都提供类型名称,因为否则每次都不知道你想要使用那种类型。