如何在c#中创建一个全局对象?

时间:2014-03-10 18:52:18

标签: c# .net global-variables

我想让我定义的类的对象全局,但我得到错误。 我正在做这样的事情:

namespace HotelSystem
{
    public static class GlobalVariables
    {
        public static login_log cashier = new login_log();
        public static List<customer> customer = new List<customer>();
    }
}

我发现了这个错误:

Inconsistent accessibility: field type 'HotelSystem.Helpers.login_log' is less accessible than field 'HotelSystem.GlobalVariables.cashier'

Inconsistent accessibility: field type 'System.Collections.Generic.List<HotelSystem.Helpers.customer>' is less accessible than field 'HotelSystem.GlobalVariables.customer'

4 个答案:

答案 0 :(得分:3)

您是否尝试过错误所说的内容?

将“public”添加到login_log类和客户类

答案 1 :(得分:3)

你可以制作你的&#34;全局&#34; class internal(并使用Properties,这通常更加惯用,因为它可以更加安全地证明您的API):

internal static class GlobalVariables
{
    private static readonly login_log cashier = new login_log();
    private static readonly List<customer> customer = new List<customer>();

    public static login_log Cashier { get { return cashier; } }
    public static IList<customer> Customer { get { return customer; } }
}

这将使可访问性与其他类相同。

请注意,制作login_logcustomer public也可以解决&#34;问题。然而,虽然我不建议制作静态&#34;全球&#34;一般来说,这种性质的数据,如果您要这样做,将其保持在集会内部可能比将其公之于众更好。

答案 2 :(得分:2)

该错误表示您的customerlogin_log类型比使用它们的字段更不易访问(即,它们不是public)。

字段的类型必须至少与字段本身一样可访问。制作customerlogin_log public可以解决此错误。

答案 3 :(得分:1)

检查login_logcustomer类的声明。他们可能在他们面前丢失了public个关键字(默认情况下将其设为内部关键字,因此不太容易访问)。