我正在使用.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'
答案 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”一词的任何特殊语法,用于访问标记为默认属性的属性。
您期待什么行为?