意思是,我有什么可以做的,所以当我尝试将short
分配给bool
时,它会调用从short
到bool
的自定义类型转换}?
我有一个数据库第一个POCO模型,在250个表的数据库中生成的整个数据模型中的每个真/假值都是short?
或short
。原始的RDBMS没有布尔值的概念。
现在我不能只将所有短路更改为bool,因为在查询DbContext时遇到类型转换错误。如果我可以在不需要bool
属性的情况下设置它的值,我可以用Value
替换自定义值类型,例如。
public struct BoolThatLikesShorts
{
...
}
然后像BoolThatLikesShorts IsActive = (short)1;
一样使用它,稍后就像
if (IsActive)
{
...
}
这样我就可以有效地获得完整的bool
。
答案 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。