我正在调用一个我不拥有的方法,它返回一个“任务”对象。我想从我的方法中返回该对象,但我还需要覆盖该对象的 Exception 属性。如果底层任务捕获异常,并且我的用户通过 Exception 属性检索该异常,我需要调整他们在返回的异常中看到的数据。
我想知道这个问题是否有比通过反射进行复制更好的解决方案。我真的不想创建一个新实例,但我找不到避免它的方法。
另一种可能性是将 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?
}