That's exactly why i wrote in the first place :)

I'm not really sure how to approach this then. The point is, that
validation is optional. If I should adhere to the open/closed principle, I
would think I need only to add a new class to implement the new behavior,
correct?

So basically, this is what happens:

When a new message is created, it is passed to the message validation
service. The service has a dependency on a IMessageValidatorFactory (typed).
The validation service is calling the factory, passing the message to
validate, which in turn is providing a validator for the specific message.
If no validator is registered for the message (null), the service should
just validate to true.

Am I completely off here and is there a better approach?

Is there a way to return a default for a service, if none is registered
that matches the concrete one, like a DefaultMessageValidator?


Kenneth



2012/1/5 Krzysztof Koźmic <[email protected]>

>  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.
>



-- 
Med venlig hilsen / Kind regards
Kenneth Siewers Møller

-- 
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.

Reply via email to