Simone - would it be possible to just keep the files in a common
namespace and have
AllTypes.FromThisAssembly().BasedOn(typeof(IMyComponent<, >))
.If(Component.IsInSameNamespaceAs<MyComponent>())
.WithService.AllInterfaces());
or would it not cut it for you?
On 24/06/2010 1:47 AM, SimoneB wrote:
Ok this is what I've come up with, not very clean, honestly.
var serviceType = typeof(IMyComponent<,>);
var basedOn = typeof(MyComponentBase<,>);
Func<Type, bool> predicate = t => t.IsGenericType&&
t.GetGenericTypeDefinition() == basedOn;
return AllTypes.FromAssembly(someAssembly)
.Where(type => type.IsAbstract == false&&
type.AnyInHierarchy(predicate))
.WithService.Select((type, baseType) =>
Enumerable.ToEnumerable(serviceType.MakeGenericType(type.FirstInHierarchy(predicate).GetGenericArguments())));
Where the extension methods on Type have the obvious meaning.
On Jun 23, 5:07 pm, SimoneB<[email protected]> wrote:
Hi,
how would I register a component like this:
class MyComponent : MyComponentBase<Type1, Type2> {}
abstract class MyComponentBase<T1, T2> : IMyComponent<T1, T2> {}
interface IMyComponent<T1, T2> {}
with service IMyComponent<Type1, Type2> which resolves to MyComponent
by convention using the fluent API?
--
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.