为什么我在ApplicationSettingsBase派生的类上看不到成员'Default'?

时间:2008-10-10 18:57:48

标签: c# .net

我正在使用.NET 3.5,我有一个类A,标记为内部密封部分,它派生自System.Configuration.ApplicationSettingsBase。然后,我以下列方式使用此类的实例:

A A_Instance = new A();
A_Instance.Default.Save();

为什么Visual C#编译器会抱怨:

error CS0117: 'A' does not contain a definition for 'Default'

3 个答案:

答案 0 :(得分:3)

你可能正在寻找这个:

private static ServerSettings defaultInstance = ((ServerSettings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new ServerSettings())));

public static ServerSettings Default 
    {
    get { return defaultInstance; }
}

这是由visual studio生成的代码

答案 1 :(得分:1)

.NET在ApplicationSettingsBase中不提供“默认”成员,可以从中访问任何方法。我没注意到的是'Default'被用作A的单身。因此,gdean2323提供的示例代码给了我一些指导。修复问题的代码要求我将以下代码添加到类A中(为简单起见,没有必要的同步):

private static A defaultInstance = new A();
public static A Default 
{
    get
    {
        return defaultInstance;
    }
}

答案 2 :(得分:0)

ApplicationSettingsBase继承自SettingsBase,它们都没有公开Default属性。根据编译器错误判断,您的类不会添加一个。

AFAIK C#不支持“Default”一词的任何特殊语法,用于访问标记为默认属性的属性。

您期待什么行为?