c#用参数定义自己的属性类型

时间:2017-06-13 11:03:55

标签: c#

我有一个域类,我不允许更改任何对象的类型(域目前太复杂和紧密绑定)。但是,如果需要,我可以添加额外的映射属性。

下面的域类有两个属性,它们是不可空的bool。我需要能够为这两个属性分配空值。

public class POCMainClassOriginal
{
    public bool MyProperty { get; set; }
    public bool MyProperty2 { get; set; }
}

以下是添加映射属性的简单解决方案:

public class POCMainClassModified
{
    public bool MyProperty { get; set; }
    public bool? MappedMyProperty
    {
        get
        {
            return MyProperty;
        }
        set
        {
            MyProperty = value.HasValue ? value.Value : false;
        }
    }

    public bool MyProperty2 { get; set; }
    public bool? MappedMyProperty2
    {
        get
        {
            return MyProperty2;
        }
        set
        {
            MyProperty2 = value.HasValue ? value.Value : false;
        }
    }
}

现在在每个映射的属性上添加额外的10行代码似乎是广泛而重复的。是否有一种简洁明了的方法来定义可能的扩展方法或新类,以便我简化这些扩展。

public class POCExtensions
{
    public bool? POCBool
    {
        get
        {
            return OriginalValue;
        }
        set
        {
            OriginalValue = value.HasValue ? value.Value : false;
        }
    }
}

public class POCMainClassModifiedAgain
{
    public bool MyProperty { get; set; }
    public POCExtensions.POCBool MappedMyProperty { get; set; }

    public bool MyProperty2 { get; set; }
    public POCExtensions.POCBool MappedMyProperty2 { get; set; }
}

在上面的课程中,我还需要以某种方式传递原始值。

注意:虽然我知道可能有更简单的方法来解决bool问题,但我对如何简化属性定义感兴趣。

0 个答案:

没有答案