1

我设置了以下属性:

public Object Value
{
    get
    {
        return AdministrationSettings.Default[settingCode];
    }
    set 
    { 
        AdministrationSettings.Default[settingCode] = value; // <<< Error occurs here
        this.RaisePropertyChanged(() => this.Value);
    }    
}

此属性提供了我的界面的字段和对象 AdministrationSettings 的字段之间的链接

AdministrationSettigs 表示设置类 .net(具有扩展名 .Settings)

我在里面定义的属性里面是一个例子:

在此处输入图像描述

当我在我的界面的某个字段中输入数据时,这里显示这个界面:

在此处输入图像描述

程序在第 9 行的指令处停止,并生成此错误:设置属性“ExclusionZone”属于不兼容类型,此处为代码

在此处输入图像描述

ExclusionZone 是在 .Settings 文件中定义的参数之一。它的类型是双重的。也是在同一个文件(.settings)中设置其他参数,有string、double、Boolean类型的

问题只在 Set 中,因为 Get 是正确的

我希望有人可以帮助我

谢谢

4

3 回答 3

0

私有 int 值 = Convert.ToInt32(Properties.Settings.Default.Setting);

Properties.Settings.Default["Setting"] = value + 1;

这对我来说崩溃了,但是当我更改为 value + 1.tostring(); 有效。当然,因为我的“设置”是字符串类型的。所以检查你的值是正确的类型:)

于 2014-02-11T14:53:16.883 回答
0

我使用 ProfileBase 来获取和维护用户配置文件中的额外设置。您从 ProfileBase.Create() 函数获得的 ProfileBase 对象似乎返回类似于字符串到字符串的字典。因此,当我对值进行更改并保存它们时,我必须将它们转换为字符串,然后在 ProfileBase 对象上调用 Save() 函数。这是我保存一个 bool 标志,但首先将其转换为 int(1 或 0),然后将其保存为字符串...

            ProfileBase pb = ProfileBase.Create(userNew.UserName, true);
            if (pb != null)
            {
                int iCreateFlag = createDefaultDummyAccounts ? 1 : 0;
                pb["CREATEDEFAULTDUMMYACCOUNTS"] = iCreateFlag.ToString();
                pb.Save();
            }

如果我不将 iCreateFlag 转换为字符串,并且尝试将 iCreateFlag 保存为 int,我会得到“设置属性的类型不兼容”,即使我的列在数据库中定义为 INT。希望这可以帮助其他人解决这个问题。

于 2016-11-18T17:12:32.143 回答
0

首先,您可能想要更改尝试访问您定义的应用程序级别属性的方式。正如亚历山大指出的那样尝试:Properties.Settings.Default["PropertyVariable"] 而不是 AdministrationSettings.Default["PropertyVariable"]

其次,您定义了三个属性,即:(1)ExclusionZone,(2)AlertZone(3)ExcessiveSpeed,但您试图访问未定义的“settingCode”。

第三,您缺少引号。

对这三件事进行排序后,请确保将“值”转换为正确的数据类型。

于 2015-11-02T08:51:13.733 回答