日期:2014-05-18  浏览次数:20785 次

CLR用户自定义类型中的操作符重载
我用C#写了一个CLR 用户自定义类型 ,假设数据类型名为 type1
我同时写了这种数据类型加法的实现方法 addtype1()

不谈建立CLR类型的过程,最后我在查询处理器里使用addtype1()方法是没有任何问题
假如
declare @a type1;
declare @b type1;

set @a = 1;
set @b = 1;

select @a + @b;

查询处理器提示:运算符对数据类型无效。运算符为 add,类型为 type1。

我考虑应该是操作符重载的问题,于是我到C#下重新写了一个操作符重载
public static type1 operator+ (type1 a, type b)
{... ...}

并且在C#下运行没问题
如在C#中:
type1 a = new type1() ; type b = new type1();
return type1 c = a + b; 这样已经成功运行

可是更新程序集到SQL Server后,执行select @a + @b 还是提示:运算符对数据类型无效。运算符为 add,类型为 type1

请问高手要怎么解决,是否不能使用C#里的操作符重载来实现SQL Server里的操作符重载,那怎么实现我想要的效果。

------解决方案--------------------
select @a + @b 
这句话不是cls执行吧,是由sql执行;
sql又不知道你定义了新类型
------解决方案--------------------
围观学习
C#中有些东西是集成的,CLR没有直接对应项。