2017-04-19 8 views
0

WCFで列挙型の拡張メソッドを使用しようとしています。WCFの列挙型に拡張メソッドを使用できません

StatusCode status = StatusCode.Closed; 
string test = status.ToDescription(); // The Error is here 

しかし、私はエラーをgetingています:その後、私は説明を抽出しようと

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(); 
     } 
    } 

} 

:ここでは拡張メソッドを持つクラスがある

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(状態)'を試してみたら? – juharr

答えて

1

拡張メソッドの名前空間 (AttributesHelperExtensionNameSpace)は、拡張が使用されているusingステートメントに追加する必要があります。

+0

それはそれでした!ありがとうございました。 –

関連する問題