2
有没有办法为一个开放的泛型类型声明一个vaiable?如何为open generic类型声明变量?可能?
鉴于:用户从工厂方法中获得了一个通用类Logger。有没有办法让一个可以容纳任何记录器的变量?
现在,Logger只从Logger继承,因为它能够为实例声明一个变量而不关心在那里记录了哪种类型。
我使用MEF,并且在导出中,我可以使用类似[Export(typeof(Logger <>))]的语法来导出泛型类型...(指定导入时的确切类型),因此有一些支持对于开放类型(至少在typeof中)。我现在需要的是一种语法,如
Logger <> Logger {get;组; }
有没有可能做类似的事情?这个特殊的语法让我“需要类型”。
为什么不使用'object'? –
@Lasse:我猜是因为'myObject.Log(something)'会产生一个编译错误(即该变量不是* only *用于存储引用)。 'dynamic'会是一个选项,但是你会失去编译时语法检查。 – Heinzi
就是这样。我向日志服务器寻求类型X的记录器(对于配置),但我不想记录到特定的genric类型,所有的东西都是基础的一部分。我有时可能会通过记录器(子类等),他们不需要知道。我试图避免(在这里和其他情况下)基类JUST有一个。 – TomTom