update MEF to preview 9
[mcs.git] / class / System.ComponentModel.Composition / src / ComponentModel / System / ComponentModel / Composition / Hosting / AtomicCompositionExtensions.cs
blob5756a0f9fab40e80f51aeee16a191a62b2089a1b
1 using System;
2 using System.Diagnostics;
3 using System.Collections.Generic;
4 using Microsoft.Internal;
6 namespace System.ComponentModel.Composition.Hosting
8 internal static class AtomicCompositionExtensions
10 internal static T GetValueAllowNull<T>(this AtomicComposition atomicComposition, T defaultResultAndKey) where T : class
12 Assumes.NotNull(defaultResultAndKey);
14 return GetValueAllowNull<T>(atomicComposition, defaultResultAndKey, defaultResultAndKey);
17 internal static T GetValueAllowNull<T>(this AtomicComposition atomicComposition, object key, T defaultResult)
19 T result;
20 if (atomicComposition != null && atomicComposition.TryGetValue(key, out result))
22 return result;
25 return defaultResult;
28 internal static void AddRevertActionAllowNull(this AtomicComposition atomicComposition, Action action)
30 Assumes.NotNull(action);
32 if (atomicComposition == null)
34 action();
36 else
38 atomicComposition.AddRevertAction(action);
42 internal static void AddCompleteActionAllowNull(this AtomicComposition atomicComposition, Action action)
44 Assumes.NotNull(action);
46 if (atomicComposition == null)
48 action();
50 else
52 atomicComposition.AddCompleteAction(action);