我正在调用一个我没有的方法,它返回一个'Task'对象。我想从我的方法返回该对象,但我也需要重写该对象的Exception属性。如果底层任务捕获异常,并且我的用户通过异常属性检索异常,则需要调整它们在返回的异常中看到的数据。将TypeA的返回对象转换为TypeA派生的类型
我想知道是否有更好的解决方案来解决这个问题,而不是通过反射进行复制。我真的不想创建一个新的实例,但我找不到一种方法来避免它。
另一种可能性是将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?
}
正是我需要知道的,没有!多谢你们! – ChrisInSeattle 2013-02-19 21:31:35