使用它作爲參數「T」的引用I型有一個類:Constants.csASP.NET C#錯誤:該類型必須是爲了在通用類型或方法
代碼:
namespace DataAccess.Utilities
{
public class Constants
{
public enum ReturnCode
{
Fail = -1,
Success = 0,
Warning = 1
}
}
}
這是我directcast類
public static T DirectCast<T>(object o) where T : class
{
T value = o as T;
if (value == null && o != null)
{
throw new InvalidCastException();
}
return value;
}
下面的代碼是我的代碼,得到的錯誤
code = DirectCast<Constants.ReturnCode>(int.Parse(db.GetParameterValue(command, "RESULTCODE").ToString().Trim()));
錯誤消息:
Error 2 The type 'DataAccess.Utilities.Constants.ReturnCode' must be a reference type in order to use it as parameter 'T' in the generic type or method 'DataAccess.DataManager.QueueingManager.DirectCast(object)'
我使用之前從.NET VB的DirectCast,但讓我嘗試搜索DirectCast沒有在C#中存在,我得到關於如何創建DirectCast具有相同的功能,vb的一些代碼。
我不明白你問。錯誤消息很清晰,是因爲您正在嘗試使用需要引用類型的值類型。你的問題是什麼_?爲什麼你有'where T:class'約束,如果你想用類以外的方法來使用該方法? –
'在哪裏T:class'但是'ReturnCode'是**枚舉不是類** –
我只是想將這段代碼從vb轉換爲c#........昏暗的代碼作爲Constants.ReturnCode = DirectCast(整數。解析(db.GetParameterValue(命令,「RESULTCODE」)。ToString.Trim),Constants.ReturnCode) –