我环顾四周,到目前为止没有任何帮助。
我目前有这段代码:
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”类型。
当它显然是...... 它适用于同一命名空间内的其他类,而不是那个...现在真的很烦我。
答案 0 :(得分:36)
虽然作者可能会提出问题,但如果其他人遇到同样的问题,也值得发布答案。
首先让我澄清问题,因为对问题的评论表明存在一些含糊之处。 OP不询问自定义配置部分。相反,问题是关于使用标准设置 - 在Visual Studio中打开项目属性上的“设置”选项卡时获得的设置窗格,如下所示:
对于答案,您必须添加默认构造函数,即您在其中指定默认值的无参数构造函数。一旦我这样做,我就可以指定类型以获得上图中显示的结果。 (请注意,如果您的自定义类型与您的设置位于同一个程序集中,则在设置设计器中打开下拉列表时,不将显示在可用类型列表中,也不会 - 选择{ {1}} - 它也会出现在该列表中,但此时您可以输入完全限定名称。)
答案 1 :(得分:0)
这是一个更常见的解决方案,也可以用于集合: 在设置中按查看代码以打开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;
}
此处的您的类型可以像List<object>
这样的集合。
DefaultSettingValueAttribute用于使用默认构造函数进行初始化,否则它将为null作为默认值。