是否可以为类型的分配添加类型转换?

时间:2013-11-27 14:03:38

标签: .net c#-4.0 type-conversion

意思是,我有什么可以做的,所以当我尝试将short分配给bool时,它会调用从shortbool的自定义类型转换}?

我有一个数据库第一个POCO模型,在250个表的数据库中生成的整个数据模型中的每个真/假值都是short?short。原始的RDBMS没有布尔值的概念。

现在我不能只将所有短路更改为bool,因为在查询DbContext时遇到类型转换错误。如果我可以在不需要bool属性的情况下设置它的值,我可以用Value替换自定义值类型,例如。

public struct BoolThatLikesShorts
{
...
}

然后像BoolThatLikesShorts IsActive = (short)1;一样使用它,稍后就像

一样使用它
if (IsActive)
{
...
}

这样我就可以有效地获得完整的bool

2 个答案:

答案 0 :(得分:1)

不是隐含的,但你可以创建一个扩展方法

public static bool CustomBoolConversion( this short value )
{
    bool retVal;

    // custom implementation

    return retVal;
}

用法:

short s = 1;
bool b = s.CustomBoolConversion();

答案 1 :(得分:1)

如果您的意思是,无论您将此代码放在何处:

short foo = 4;
bool bar = (bool)foo; // Or even without cast.

您有自定义的TypeConverter(或其他)被调用,然后不,没有这么简单的方法这样做。

但是,有一些解决方法:

  • 创建自定义 valuetype ,可以隐式投放到bool 显式从短其中YourType是一个结构,其中定义了两个强制转换运算符。你可以拥有

    bool bar = (YourType)(short)3;
    
  • 创建一个扩展程序,允许您像这样投射

    bool bar = ((short)3).ToBool();
    

关于更新后的答案,请尝试查看:Convert value when mapping