c# - Castle Windsor - Register all interfaces with factory method -
i have number of interfaces:
ifirstproviderisecondproviderithirdprovider- etc..
i'm trying register these interfaces use factory method instance:
container.register ( alltypes .fromthisassembly() .where(t => t.isinterface && t.name.endswith("provider")) .configure(c => c.usingfactorymethod(f => f.resolve<dictionaryadapterfactory>().getadapter<object>(c.servicetype, session)) ); but doesn't seem work. instead, have use for loop register these interfaces:
list<type> providers = new list<type> ( assembly .getexecutingassembly() .gettypes() .where(x => x.isinterface && x.name.endswith("provider")) ); foreach (type provider in providers) { type temp = provider; container.register ( component .for(temp) .usingfactorymethod(f => f.resolve<dictionaryadapterfactory>().getadapter<object>(temp, session)) ); } is there better way register these interfaces besides using for loop?
there's no better built in way in windsor < 3.0
as of windsor 3, can using types, instead of alltypes.
alltypes means all non abstract classes
types means all types.
yes, while suck , counterintuitive, since alltypes came first, couldn't change existing behavior maintain backward compatibility. maintain sanity recommended use classes instead of alltypes, you'll end registering either classses classes , types cases 1 in question.
Comments
Post a Comment