1 - ваши привязки к IObjC не имеют ничего общего с другими привязками.Неважно, где, когда и как вы связываете другие сервисы.
2 - вы можете использовать расширения XML, но я хотел бы спросить, почему вы считаете, что он должен быть настраиваемым.
3 - есть 2 варианта для вашего условия.Во-первых, вы хотите принять решение при запуске, чтобы определить, использовать ли ObjC1 в течение всего времени жизни приложения, или ObjC2.если это так, ваш код в порядке.однако, если вы хотите динамически определять, какой объект использовать при каждом разрешении привязки, вам нужно будет поместить условие в привязку, например так:
Bind<IObjC>().ToMethod( ctx => condition ? ctx.Kernel.Get<ObjC1>() : ctx.Kernel.Get<ObjC2>() );
поочередно, вы можете использовать именованные привязки:
Bind<ILog>().ToConstant( LogManager.GetLogger( "Accounting" ) ).Named( "Accounting" );
или «Когда» условия для помощи:
Bind<ILog>().ToConstant( LogManager.GetLogger( "Background" ) ).When( context => context.Target != null && context.Target.Name == "backgroundLogger" );