我喜欢C#中的泛型,但有时与它们一起工作会变得有点复杂.下面的问题我时不时地遇到.有没有办法让这个场景更简单?我看不出怎么样,但我希望有人可以:)
给出三个基类:
public abstract class Inner { } public abstract class Outerwhere T : Inner { } public abstract class Handler where TOuter : Outer where TInner : Inner { public abstract void SetValue(TInner value); }
还有一些简单的实现:
public class In : Inner { } public class Out : Outer{ } public class HandleOut : Handler { public override void SetValue(In value) { } }
现在我的问题是:For HandleOut
,类型TInner
是由"Out"类型给出的,那么是否有任何方法可以简化HandleOut
类似的定义public class HandleOut : Handler
并仍然能够使用内部类型作为参数SetValue
?
这是一个非常简单的例子,但我有时在定义中得到一长串泛型类型,通常所有这些类型都可以从第一种类型中逻辑推导出来.我有什么诡计吗?