我设置了以下属性:
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 get it it right
我希望有人可以帮助我
由于
答案 0 :(得分:0)
private int value = Convert.ToInt32(Properties.Settings.Default.Setting);
Properties.Settings.Default [“Setting”] = value + 1;
这对我来说很糟糕,但当我改为值+ 1.tostring()时;有效。因为我的“设置”是字符串类型。因此,请检查您的值是否为正确类型:)
答案 1 :(得分:0)
首先,您可能希望更改尝试访问定义的应用程序级属性的方式。 正如亚历山大指出的那样尝试:Properties.Settings.Default [&#34; PropertyVariable&#34;]而不是AdministrationSettings.Default [&#34; PropertyVariable&#34;]
其次,您已经定义了三个属性,即:(1)ExclusionZone,(2)AlertZone(3)ExcessiveSpeed,但您正试图访问&#39; settingCode&#39;没有定义。
第三,你缺少引号。
一旦你对这三件事情进行排序,请确保你施展价值&#39;到正确的数据类型。
答案 2 :(得分: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,则会得到“settings属性属于非兼容类型”,即使我的列在数据库中定义为INT。希望这可以帮助其他人解决这个问题。