匿名タイプとObject変換

975 ワード

本論文の転載:http://www.cnblogs.com/JustRun1983/archive/2012/05/13/2497997.html
ネットの匿名タイプはとても使いやすいです。 しかし、開発中に問題がありました。匿名タイプをリターン値にすると、objectタイプになります。対応できる匿名タイプを再変換できますか?
 
//          ,     object  

object ReturnAnonymous() {

    return new { City="Prague", Name="Tomas" };

}



void Main()

 {

      //     ,  object  

      object o = ReturnAnonymous();

      //     Cast  ,               

      var typed = Cast(o, new { City="", Name="" });

      Console.WriteLine("{0}, {1}", typed.City, typed.Name)

}



// Cast      

T Cast<T>(object obj, T type) {

     return (T)obj;

}

 
  
パッケージの拡張方法の使用を推奨します。
 public static class Extension    {
           public static T Change Type<T>(this object obj,T t)        {            return(T)obj        }
    }