22660


RealProxyを継承したクラスから`GetTransparentProxy`メソッドを呼び出し、元のクラスへキャストすることでインスタンスを取得しているのですが、このインスタンスをウォッチウィンドウに追加したところ

> このコンテキストでは、透過プロキシのランタイム型を取得できません。

といったエラーが発生し、プロパティなどを表示することができません。  
一つ一つ登録する、もしくはフィールドやプロパティを列挙し出力することで必要データを表示させる事は出来るのですが、出来れば余計な手間は省きたいです。  
なにか良い策はありませんか？

[code]

    var hoge = (Hoge)GetTransparentProxy();
    var properties = hoge.GetType().GetProperties();
    // 下記の手間を無くしたい
    foreach (PropertyInfo i in properties) Console.WriteLine($"{i.Name}: {i.PropertyType.Name} = {i.GetValue(hoge)}");
    
[/code]


CC BY-SA 3.0
2016-02-29T07:32:00.663
22657
2016-02-29T09:24:28.837
2016-02-29T09:24:28.837
3605
14228
question
c#
透過プロキシについて


pgrhoさんも[回答](https://ja.stackoverflow.com/a/21854/4236)の中で

> .NET中間言語の知識が必要になりますので非常に敷居が高くなります

と説明されている通りで、デバッグが困難なのも「非常に敷居が高」いひとつです。なお[.NETリモート処理](https://msdn.microsoft.com/ja-
jp/library/72x4h507\(v=vs.100\).aspx)や[RealProxyの拡張](https://msdn.microsoft.com/ja-
jp/library/scx1w94y\(v=vs.100\).aspx)のドキュメントでも冒頭に

> このトピックの対象は、既存のアプリケーションとの下位互換性のために残されているレガシ
> テクノロジに特定されています。新規の開発には、このトピックを適用しないでください。分散アプリケーションは、現在は Windows
> Communication Foundation (WCF) を使用して開発する必要があります。

と警告されていて、私も使用すべきではないと考えています。


CC BY-SA 3.0
2016-02-29T07:56:08.597
22660
2016-02-29T07:56:08.597
2017-04-13T12:52:39.113
-1
4236
22657
answer