2017-04-19 28 views
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不可用,將不勝感激。謝謝。

+0

在((DescriptionAttribute)da [0])處強制再次強制轉換。說明 –

+1

您確定在嘗試使用擴展方法的代碼中使用了AttributesHelperExtensionNameSpace;如果你嘗試'AttributesHelperExtension.ToDescription(status)',會怎麼樣? – juharr

回答

1

需要將擴展​​方法 (AttributesHelperExtensionNameSpace)的名稱空間添加到使用擴展名的using語句中。

+0

就是這樣!謝謝。 –