Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void MergeWith(this AbstractApplicationContext targetContext,
- AbstractApplicationContext sourceContext)
- {
- Check.NotNull(sourceContext, "sourceContext");
- targetContext.Stop();
- foreach (var definitionName in sourceContext.GetObjectDefinitionNames())
- {
- var definition = sourceContext.GetObjectDefinition(definitionName);
- targetContext.RegisterObjectDefinition(definitionName, definition);
- var obj = targetContext.CreateObject(definitionName, definition.ObjectType,
- (from holder in
- (from DictionaryEntry val in definition.ConstructorArgumentValues.IndexedArgumentValues
- select val.Value).OfType<ConstructorArgumentValues.ValueHolder>()
- let typedStr = new TypedStringValue((string) holder.Value, holder.Type)
- let type = typedStr.ResolveTargetType()
- let typeConverter = TypeConverterRegistry.GetConverter(type)
- select typeConverter.ConvertFrom(holder.Value)).ToArray());
- targetContext.ConfigureObject(obj, definitionName);
- targetContext.GetObject(definitionName);
- }
- targetContext.Start();
- }
- // after a merge it's recommended to dispose the old/source context
- public static void MergeWith(this IApplicationContext targetContext, IApplicationContext sourceContext)
- {
- Check.NotNull(sourceContext, "sourceContext");
- var absSourceContext = sourceContext as AbstractApplicationContext;
- var absTargetContext = targetContext as AbstractApplicationContext;
- if (absSourceContext == null || targetContext == null)
- return;
- absTargetContext.MergeWith(absSourceContext);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement