「タスク」オブジェクトを返す自分が所有していないメソッドを呼び出しています。メソッドからそのオブジェクトを返したいのですが、そのオブジェクトの Exception プロパティもオーバーライドする必要があります。基になるタスクが例外をキャッチし、ユーザーが Exception プロパティを介してその例外を取得した場合、返された例外で表示されるデータを微調整する必要があります。
リフレクションを介してコピーを行うよりも、この問題に対するより良い解決策があるかどうか疑問に思っています。新しいインスタンスを作成したくありませんが、それを回避する方法が見つかりません。
もう 1 つの可能性は、独自のクラスで Task オブジェクトをラップすることです。しかし、私のメソッドは Task (または派生) オブジェクトを返さないため、下流で問題が発生する可能性があります。Task のすべてのパブリック メンバーを実装し、基本バージョンを呼び出すだけのコードの量は言うまでもありません。
以下のコードは明らかに機能しませんが、概念的には私がやりたいことです:
public class MyTask : Task
{
override Exception Exception { get { return Tweak(base.Exception); } }
}
public MyTask MyMethod()
{
Task t = MethodIDontOwnThatReturnsTask();
return (MyTask) t; // Can I do this type of operation without copying t?
}