none
[DataMember (Name = "FileHoge")]のName値取得方法に関して RRS feed

  • 質問

  • 初めまして。

     

    JSONデータ等をシリアライズした際のプロパティ名を指定するためにDataMemberのName値を設定できますが、

    このName値を取得することは可能でしょうか。

     

    やりたいこととしては以下のような感じです。

     

        class Program
        {
            static void Main(string[] args)
            {
                // ここでFilenameプロパティのDataMember Nameに
                // 関連付けられているFileHogeを取得したい。
            }
        }
    
        [DataContract]
        class FileList
        {
            [DataMember(Name ="FileHoge")]
            public string Filename { get; set; }
        }
    

     

    シリアライズ後のエラー発生時にFileHogeを含めていますか?というようなエラーメッセージを表示させたいのです。現状では自分でNameを直接入力している状態です。

     

    よろしくお願いいたします。


    • 編集済み cyber222 2011年11月26日 15:09
    2011年11月26日 15:07

回答

  • こういうことかな?

    var dataMember = typeof(FileList)
      .GetProperty("Filename")
      .GetCustomAttributes(false)
      .OfType<DataMemberAttribute>()
      .Single();
    Console.WriteLine(dataMember.Name);
    

     

    • 回答の候補に設定 佐祐理 2011年11月28日 22:47
    • 回答としてマーク 山本春海 2011年12月1日 9:23
    2011年11月28日 2:08

すべての返信