温莎城堡中类型化工厂的不同参数类型

Different parameters type for typed factory in Castle Windsor

给出这样的界面:

public interface IFooFactory
{
  IFoo Create();
  void Release(IBar bar);
}

并假设 IFoo 必须实现 IBar,Castle Windsor 会知道如何处理该对象,或者我们是否会在对象类型不完全相同的情况下产生任何问题?文档没有说明是否支持这种方式。

是的,会的。释放方法的声明类型对 Windsor 无关紧要。因此,以下所有方法都将具有相同的行为:

void Release(IBar obj)
void ReleaseMe(IFoo obj)
void Exterminate(Object obj)

创建和发布方法中的不同类型可能会让最终使用您的 IFooFactory 的人感到困惑。