配置文件提供程序中 bool 类型的默认值为 null
我在我的 webconfig.xml 中定义了一个自定义配置文件。我定义了此属性
<add name="sex" type="bool" serializeAs="String" defaultValue="[null]"/>
,因为数据库中存在空值。我在这段代码中得到一个空引用异常:
ProfileCommon p = GetProfile();
txtFirstName.Text = p.first_name;
txtLastName.Text = p.last_name;
txtInitial.Text = p.initial;
txtEmail.Text = p.email;
//这会导致空引用异常 布尔? blnTest = p.sex;
这是在 webconfig 中设置默认 null 值的正确方法吗?
I have a custom profile defined in my webconfig. I have this property defined
<add name="sex" type="bool" serializeAs="String" defaultValue="[null]"/>
as there are null values in the database. I get a null reference exception in this code:
ProfileCommon p = GetProfile();
txtFirstName.Text = p.first_name;
txtLastName.Text = p.last_name;
txtInitial.Text = p.initial;
txtEmail.Text = p.email;
//this causes an null reference exception
bool? blnTest = p.sex;
Is this the correct way to set a default null value in webconfig?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这里的问题是配置文件属性的默认类型是 bool,它不是可为 null 的类型。它总是默认为 false。
您始终可以创建一个自定义类来封装性别,并使用它而不是 bool。这样,当没有设置值时,该类将尝试实例化并根据需要恢复为 null。
更改网络配置:
和类:
The problem here is that the default type of a profile property is bool which is not a nullable type. It will always default to false.
You could always create a custom class to encapsulate Sex / Gender and use this instead of bool. That way when there is no value set the class will then attempt to instantiate and revert to null as required.
Changes to web config:
and the class: