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.
