9

我环顾四周,到目前为止没有任何帮助。

我目前有这个代码:

namespace InstaShot
{
    [Serializable]
    public class Hotkey
    {
        public uint Modifier { get; private set; }
        public int Key { get; private set; }
        public Hotkey(uint modifier, int key)
        {
            this.Modifier = modifier;
            this.Key = key;
        }
    }
}

然而,每当我尝试在我的应用程序设置中创建设置时,我都会得到:

未定义类型“InstaShot.Hotkey”。

显然它是......它适用于同一命名空间内的其他类,而不是那个......现在真的很烦我。

4

2 回答 2

39

尽管问题作者可能已经继续前进,但如果其他人遇到相同的问题,则值得发布答案。

首先让我澄清一下这个问题,因为对这个问题的评论表明存在一些歧义。OP 没有询问自定义配置部分。相反,问题是关于使用标准设置 - 当您在 Visual Studio 中打开项目属性的“设置”选项卡时获得的设置窗格,如下所示:

标准 Visual Studio 项目设置

至于答案,您必须添加一个默认构造函数,即您分配默认值的无参数构造函数。一旦我这样做了,我就可以指定类型以获得上图所示的结果。(请注意,如果您的自定义类型与您的设置在同一个程序集中,当您在设置设计器中打开下拉列表时,它不会browse出现在可用类型列表中,也不会出现在该列表中或者,但此时您可以输入完全限定的名称。)

于 2013-06-18T17:39:56.250 回答
1

这是一个更常见的解决方案,它也可以用于集合:在设置中按查看代码以打开 Settings.cs

以这种方式添加您的属性:

    [global::System.Configuration.UserScopedSettingAttribute()]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Configuration.DefaultSettingValueAttribute("")]
    public YourType PropertyName
    {
        get => (YourType)this["PropertyName"];
        set => this["PropertyName"] = value;
    }

这里的 YourType 可以是集合之类的List<object>。DefaultSettingValueAttribute 用于使用默认构造函数进行初始化,否则它将为 null 作为默认值。

于 2020-02-08T14:17:27.187 回答