0
我正嘗試在WCF中爲枚舉使用擴展方法。這裏是擴展方法的類:擴展方法不適用於WCF中的枚舉
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Runtime.Serialization;
using System.ComponentModel;
using AttributesHelperExtensionNameSpace;
namespace Ratu
{
[DataContract]
public enum StatusCode
{
[EnumMember]
[Description("C")]
Closed = 0,
[EnumMember]
[Description("A")]
Cancelled = 1
}
}
namespace AttributesHelperExtensionNameSpace
{
public static class AttributesHelperExtension
{
public static string ToDescription(this Enum value)
{
var da = (DescriptionAttribute[])(value.GetType().GetField(value.ToString())).GetCustomAttributes(typeof(DescriptionAttribute), false);
return da.Length > 0 ? da[0].Description : value.ToString();
}
}
}
然後我試圖提取描述:
StatusCode status = StatusCode.Closed;
string test = status.ToDescription(); // The Error is here
但我歌廳的錯誤:
Ratu.StatusCode does not contain a definition for 'ToDescription' and no extension method 'ToDescription' accepting a first argument of type 'Ratu.StatusCode' could be found (are you missing a using directive or an assembly reference?)
爲何任何幫助ToDescription不可用,將不勝感激。謝謝。
在((DescriptionAttribute)da [0])處強制再次強制轉換。說明 –
您確定在嘗試使用擴展方法的代碼中使用了AttributesHelperExtensionNameSpace;如果你嘗試'AttributesHelperExtension.ToDescription(status)',會怎麼樣? – juharr