2011-08-18 82 views
1

我有旧的代码,我只是反编译(源丢失,但我们拥有它)。在C#中编译SQL程序集错误的旧代码

现在我想重新编译,但有这些误差修改:

Error 1 'System.Data.SqlTypes.SqlBoolean.operator true(System.Data.SqlTypes.SqlBoolean)': cannot explicitly call operator or accessor C:\NCESTableGenerator\NCESTableGenerator\db\OutputTableDAO.cs 89 32 NCESTableGenerator 

在下面的一段代码:

if (SqlBoolean.op_True(reader.GetSqlInt32(0) == 1)) 
在下面的一段

Error 3 Cannot convert type 'bool' to 'sbyte' C:\NCESTableGenerator\NCESTableGenerator\Formatter.cs 172 30 NCESTableGenerator 

代码:

public static string GetEstimateFloatStr(double data, int sn, int num, ref bool roundedZero, ref bool lowN) 
    { 
     if (sn <= 30) 
     { 
      sbyte num1 = (sbyte) lowN; 
      lowN = true; 
      return "‡"; 

任何想法?

+0

反编译并不总能让你回到只能重新编译的代码。 –

+0

是真的,我该如何解决这个问题? – cdub

回答

2

在第一线,我认为这是安全地把它改写为

if (reader.GetSqlInt32(0) == 1) 

:第二个麻烦的线路(看起来像它可以因为返回被删除),但如果你不能将其删除更改到

Int16 num1 = (Int16)lowN; 

char num1 = (char)lowN; 

由于为sbyte通过MSDN所列是不符合CLS。

+0

是啊我不知道为什么有一个新的变种创造那里然后返回,我想不出任何理由什么行会实现 – cdub

+0

是的当你经常反编译代码时,你会看到很奇怪的事情,但很难判断它是否是出于某种原因或反编译器中的错误/错误。 –

+0

谢谢,帮助 – cdub