Implement MachineKey.Protect and MachineKey.Unprotect
[mono.git] / mcs / class / System.ComponentModel.Composition / src / ComponentModel / Microsoft / Internal / LazyServices.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Linq;\r
4 using System.Threading;\r
5 using System.Text;\r
6 using System.Globalization;\r
7 \r
8 namespace Microsoft.Internal\r
9 {\r
10     internal static class LazyServices\r
11     {\r
12         public static Lazy<T> AsLazy<T>(this T t)\r
13             where T : class\r
14         {\r
15             return new Lazy<T>(() => t, false);\r
16         }\r
17 \r
18         public static T GetNotNullValue<T>(this Lazy<T> lazy, string argument)\r
19             where T : class\r
20         {\r
21             Assumes.NotNull(lazy);\r
22             T value = lazy.Value;\r
23             if (value == null)\r
24             {\r
25                 throw new InvalidOperationException(\r
26                     string.Format(CultureInfo.CurrentCulture, Strings.LazyServices_LazyResolvesToNull, typeof(T), argument));\r
27             }\r
28 \r
29             return value;\r
30         }\r
31     }\r
32 }\r