上下文:这是一个引擎,它充满了通用类,因此未来的用户可以扩展行为的某些部分,而不用关心引擎本身的内部工作。
现在,我需要一个 C 类:
public class C
{
public C Copy(params) { ... }
}
但也是一个扩展类 D:
public class D : C
{
public D Copy(params) { ... }
}
基本上我有一些通用类,但我需要一个返回正确类型的复制方法(实际上是“在新位置制作副本”方法,但这无关紧要)。
public class SampleClass<T>
where T : C
{
public void Stuff()
{
...
T copy = favoriteThing.Copy(params);
...
}
}
等等。我可以直接转换它,并相信未来的实施者会做对,但我宁愿通过合同明确说明。有什么优雅的方法可以做到这一点吗?