プロパティ リフレクションを SetValue に使用すると、プロパティは TargetInvocationException をスローします。ただし、SetValue の呼び出しは呼び出しであるため、例外はキャッチされ、プロパティで処理されません。プロパティでターゲット例外を処理し、メイン プログラムでのみスローする方法はありますか?
このスローを、呼び出しではなく、メソッド呼び出しを行ったかのようにしたいのです。
明確にするために編集:
私が抱えている問題は、リフレクト クラス内で、「ユーザー コードによって例外が処理されませんでした」というデバッグ メッセージが表示されることです。デバッグセッションを「続行」する必要があり、内部例外は「実際の」例外です。これは当然のことでしょうか?警告を受け取りたくない (そして警告を非表示にしたくない)、コードで警告を修正したい。
public class reflect
{
private int _i;
public int i
{
get { return _i; }
set
{
try{throw new Exception("THROWN");}
catch (Exception ex)
{ // Caught here ex.Message is "THROWN"
throw ex; // Unhandled exception error DONT WANT THIS
}
}
}
}
class Program
{
static void Main(string[] args)
{
reflect r = new reflect();
try
{
r.GetType().GetProperty("i").SetValue(r, 3, null);
}
catch(Exception ex)
{ // Caught here, Message "Exception has been thrown by the target of an invocation"
// InnerMessage "THROWN"
// WANT THIS Exception, but I want the Message to be "THROWN"
}
}
}