Castle Windsor IoC コンテナーを使用するコード ベースを継承しました。最近、別の互換性の問題により、バージョン v2.5.2 を 3.0.0 からアップグレードすることを余儀なくされました。
v3.0.0 へのアップグレード後、テスト クラスの 1 つである次の拡張メソッドは、次のエラーでビルドに失敗します。
型 'TInterface' は、ジェネリック型またはメソッド 'Castle.MicroKernel.Registration.ComponentRegistration' でパラメーター 'TService' として使用するには、参照型である必要があります。
public static class ContainerExtensions
{
/// <summary>
/// Sets the registration expectation on the mocked container.
/// </summary>
/// <typeparam name="TInterface">The type of the interface.</typeparam>
/// <typeparam name="TImplementation">The type of the implementation.</typeparam>
/// <param name="container">The container.</param>
public static void SetRegistrationExpectation<TInterface, TImplementation>(this IWindsorContainer container) where TImplementation : TInterface
{
Predicate<IEnumerable<IRegistration>> pred = regs =>
{
var reg = regs.OfType<ComponentRegistration<TInterface>>().FirstOrDefault();
return reg != null && reg.Implementation == typeof(TImplementation);
};
container
.Expect(c => c.Register(null))
.IgnoreArguments()
.Constraints(Rhino.Mocks.Constraints.Is.Matching(pred))
.Repeat.Once();
}
}
では、ComponentRegistration はインターフェイスを使用できなくなったように見えますか? ドキュメントを見ても、修正方法がわかりません。
任意のポインタをいただければ幸いです。