如何在静态类中创建静态类List属性

时间:2012-02-01 08:40:16

标签: c#

我创建了以下课程:

       public static class Current
        {
            public static class User
            {
                public static int UserID { get; set; }
                public static string UserName { get; set; }
                public static List<UserRole> Role { get; set; }
            }
            public static class UserRole
            {
                public static int RoleID { get; set; }
                public static string RoleName { get; set; }
            }
       }

但它会给我一个错误:在这一行

public static List<UserRole> Role { get; set; }

错误1'Framework.Security.Current.UserRole':静态类型不能用作类型参数

3 个答案:

答案 0 :(得分:8)

这与您尝试使用该类的位置无关 - 它与您不能将静态类用作类型参数这一事实有关。鉴于您无法创建静态类的实例,List<UserRole>如何才能有用?

强烈怀疑那些类不应该是静态类开始 - 为什么你想要它们呢?

(还不清楚为什么它们应该是嵌套类,但这是另一回事。)

答案 1 :(得分:2)

我明白你要做什么。 (虽然你对它有点错误。)唯一的静态类应该是User,它们不应该是嵌套的。您的设计还存在一些其他问题,但最终每个人的工作方式都不同。

这是在静态类中拥有List的一种方法。

        public static class CurrentUser           
        {              
            public static int UserID { get; set; }              
            public static string UserName { get; set;   }


            public static List<UserRole> Role()
            {
                //Call another class with method to fill the list
                AnotherClass _anotherClass = new AnotherClass();
                return _anotherClass.Roles();

            }
        }  

然后有一个非静态的UserRole

public  class UserRole         
        {              
        public  int RoleID { get; set; }     
        public  string RoleName { get; set; }      
        }

从中检索数据的类应该包含填充List

的方法
            public class AnotherClass
        {
            public List<UserRole> Roles()
            {
                 List<UserRole> outList = new List<UserRole>();
                 //Fill the List with your UserRoles
                 foreach (object MyData in MyDataList)
                 {
                     UserRole myRole = new UserRole();
                     outList.Add(myRole);
                 }

                 return outList;
            }

        }

答案 2 :(得分:0)

此处的问题是您不能将UserRole用作List的类型。 因为它是静态类,所以它不会真正有意义。列表由作为类实例的对象组成。没有静态类的实例。

你应该重新考虑你的设计,你有一些严重的缺陷。