0

我在我的配置文件类中添加了一个新的布尔属性。

我似乎无法找到一种方法,但默认情况下它的值是真实的。

Profile.ShowDocumentsNotApplicable

未显式设置为 true 时返回 false...

web.config 内容:

<!-- snip -->
<profile inherits="Company.Product.CustomerProfile">
  <providers>
    <clear />
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ApplicationServices" applicationName="/" />
  </providers>
</profile>
<!-- snap -->

客户资料:

public class CustomerProfile: ProfileBase
{
    private bool _showDocumentsNotApplicable = true;

    public bool ShowDocumentsNotApplicable
    {
        get { return Return("ShowDocumentsNotApplicable", _showDocumentsNotApplicable); }
        set { Set("ShowDocumentsNotApplicable", value, () => _showDocumentsNotApplicable = value); }
    }

    private T Return<T>(string propertyName, T defaultValue)
    {
        try
        {
            return (T)base[propertyName];
        }
        catch (SettingsPropertyNotFoundException)
        {
            return defaultValue;
        }
    }

    private void Set<T>(string propertyName, T setValue, System.Action defaultAction)
    {
        try
        {
            base[propertyName] = setValue;
        }
        catch (SettingsPropertyNotFoundException)
        {
            defaultAction();
        }
    }
}
4

1 回答 1

1

使用布尔属性,您经常会发现它们可以用任意一种方式表示。我认为最好的做法是让它们以任何方式使“假”成为默认值。因此,如果默认情况下您希望Profile.ShowDocumentsNotApplicable为真,那么我会调用它Profile.HideDocumentsNotApplicable,默认为假。这背后的原因是编译器将未初始化的布尔值设置为 false;让您的逻辑默认值与编译器的默认值匹配是有意义的。

如果反过来不太适合(例如,您一直在使用!Profile.HideDocumentsNotApplicable并且您发现这会降低可读性),那么您可以执行以下操作:

public class CustomerProfile: ProfileBase
{
    private bool _hideDocumentsNotApplicable;
    public bool ShowDocumentsNotApplicable
    {
        get { return !_hideDocumentsNotApplicable); }
        set { _hideDocumentsNotApplicable = !value); }
    }

    //other stuff...
}
于 2013-04-30T12:33:32.893 回答