That's not something I would normally recommend but if that's what you
want it should be fine :-)
K
On 05/01/2012 9:51 PM, Kenneth Siewers Møller wrote:
Hi,
I'm currently working on an alternative implementation of the
TypedFactoryComponentResolver.
My problem is, that I'd like to use typed factories, but I need to
return null, in case the component isn't registered.
The concrete usecase is, that I'm looking for a validator for a
specific type, and if no validator is registered, it should just
return null from the factory.
As the default implementation always throws an exception, if no
component is registered, I've created my own version.
/// <summary>
/// Resolves a component. If the component isn't registered, the
resolver returns null instead of an exception.
/// </summary>
internal class NullSafeTypedFactoryComponentResolver :
TypedFactoryComponentResolver
{
public NullSafeTypedFactoryComponentResolver(string componentName,
Type componentType, IDictionary additionalArguments, bool
fallbackToResolveByTypeIfNameNotFound, Type actualSelectorType)
: base(componentName, componentType, additionalArguments,
fallbackToResolveByTypeIfNameNotFound, actualSelectorType) { }
public override object Resolve(IKernelInternal kernel, IReleasePolicy
scope)
{
// Check to see if the component is registered
var hasComponent = componentName != null
? kernel.HasComponent(componentName)
: kernel.HasComponent(componentType);
return hasComponent ? base.Resolve(kernel, scope) : null;
}
}
I'm then overriding the BuildFactoryComponent method from the
DefaultTypedFactoryComponentSelector, to return my own implementation.
Since I'm doing something non-standard, I'd just wanted to make sure,
I'm not misusing (or misunderstanding) the concept of a typed factory.
Basically I'm changing the semantics of the container, so I'm just a
bit uncertain about which implications it may bring.
Thanks,
Kenneth
--
You received this message because you are subscribed to the Google
Groups "Castle Project Users" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/castle-project-users/-/GW3SaUL8FTEJ.
To post to this group, send email to
[email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/castle-project-users?hl=en.
--
You received this message because you are subscribed to the Google Groups "Castle
Project Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/castle-project-users?hl=en.