I was unable to find how to remove a component (this should be added back in).
The best way I could find to disable the DelegateFactory was stop using the TypedFactoryFacility class to setup the Typed Factories and use the code from the Init function inside it, minus the delegate factory methods.
As so:
// Stop using AddFacility
//container.AddFacility<TypedFactoryFacility>();
// Initialise the TypedFactoryFacility manually, leaving out the DelegateFactory components.
container.Kernel.Register(new IRegistration[] {
Component.For<TypedFactoryInterceptor>().NamedAutomatically(TypedFactoryFacility.InterceptorKey),
// Disable DelegateFactory
// Component.For<ILazyComponentLoader>().ImplementedBy<DelegateFactory>().NamedAutomatically(TypedFactoryFacility.DelegateFactoryKey),
Component.For<ITypedFactoryComponentSelector>().ImplementedBy<DefaultTypedFactoryComponentSelector>().NamedAutomatically("Castle.TypedFactory.DefaultInterfaceFactoryComponentSelector"),
// Disable DelegateFactory
// Component.For<ITypedFactoryComponentSelector>().ImplementedBy<DefaultDelegateComponentSelector>().NamedAutomatically(TypedFactoryFacility.DefaultDelegateSelectorKey)
});
container.Kernel.ComponentModelBuilder.AddContributor(new TypedFactoryCachingInspector());
I had to use magic string "Castle.TypedFactory.DefaultInterfaceFactoryComponentSelector"
DefaultInterfaceSelectorKey
is an internal field.
Now you can use interface-factories, without delegate-factories messing everything up.