如何在不实例化的情况下使用类?

时间:2011-08-23 01:33:14

标签: c# asp.net

我上课了:

static class GetRole
    {
        public static string OfUser(string username)
        {
            string result="None";
            foreach (string key in WebConfigurationManager.AppSettings)
            {
                if (WebConfigurationManager.AppSettings[key].Contains(username))
                {
                    result = WebConfigurationManager.AppSettings[key];
                    break;
                }
            }

            return result;
        }
    }

我想像这样使用它

string role = GetRole.OfUser(username);

或者更喜欢这样:

string role = GetRole(username);

我该怎么做?

4 个答案:

答案 0 :(得分:6)

  

我想像这样使用它

string role = GetRole.OfUser(username);

所以这样做;这似乎是正确的。你试过吗?

  

或者更喜欢这样:

string role = GetRole(username);

这不起作用;你必须指定你正在调用的方法以及它来自哪个类。

如果您在与您调用的代码相同的类中有static void GetRole,那么您可以这样做。


然而,仅仅因为你可以做某事并不意味着你应该这样做。 “获取用户角色”的自然方式是调用属于用户自身的方法。这反过来意味着拥有一个为每个用户实例化的User类。

答案 1 :(得分:1)

你几乎已经用你的第一个如何使用它的例子钉了它:

string role = GetRole.OfUser(username);

静态成员表示它没有声明它的任何类型的实例。唯一可能给你带来麻烦的是你的班级是内部的;这意味着您无法从其他程序集访问它。尝试制作public static class GetRole

答案 2 :(得分:1)

有点晚了,但很容易做到

using static MyProjectNameSpace.GetRole;

现在你可以直接使用你的方法了

OfUser("NewUserName");

答案 3 :(得分:0)

string role = GetRole.OfUser(username);

你试图在设置之前使用方法的变量...方法检查AppSettings[key].Contains(username))然后返回一个输出,所以方法期望像这样的字符串输入...

string role = GetRole.OfUser("NewUsername");