- Timestamp:
- 11/24/15 18:32:55 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PersistenceOverhaul/HeuristicLab.Persistence/4.0/Core/StaticCache.cs
r13375 r13387 26 26 using Google.ProtocolBuffers; 27 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 28 using System.Drawing; 28 29 29 30 namespace HeuristicLab.Persistence { … … 39 40 40 41 internal StaticCache() { 41 Initialize(); 42 guid2Transformer = new Dictionary<Guid, ITransformer>(); 43 transformer2Guid = new Dictionary<ITransformer, Guid>(); 44 guid2Type = new Dictionary<Guid, Type>(); 45 type2Guid = new Dictionary<Type, Guid>(); 46 typeInfos = new Dictionary<Type, TypeInfo>(); 47 extensionRegistry = ExtensionRegistry.CreateInstance(); 48 49 foreach (var transformer in ApplicationManager.Manager.GetInstances<ITransformer>().OrderBy(x => x.Priority)) 50 RegisterTransformer(transformer); 51 52 RegisterType(new Guid("94AD8522-3F55-4580-A6F8-2D2AAEDD4B8C"), typeof(bool)); 53 RegisterType(new Guid("4A1C0FD5-423D-4F96-AB22-A496578C25AC"), typeof(byte)); 54 RegisterType(new Guid("C4B00F0B-FED7-439F-B1B2-8A0048B64882"), typeof(sbyte)); 55 RegisterType(new Guid("9F451811-3DE1-43AB-8B74-D7E03851857B"), typeof(short)); 56 RegisterType(new Guid("46244D54-0145-49F7-9CF3-9CDB7FB5F240"), typeof(ushort)); 57 RegisterType(new Guid("1FDDE40C-09E3-491F-8FBB-32BB3C885E9E"), typeof(char)); 58 RegisterType(new Guid("EE3E0F9C-A5C2-4461-AF36-28BD8F26E6FB"), typeof(int)); 59 RegisterType(new Guid("69476D18-D285-43E9-BC7C-6CC9E9F2321E"), typeof(uint)); 60 RegisterType(new Guid("7C7BC5EC-F001-4BA0-9F85-50DCBAA9AE81"), typeof(long)); 61 RegisterType(new Guid("AC808D5A-63BB-457C-9B92-C9B83DA2B139"), typeof(ulong)); 62 RegisterType(new Guid("BF22653A-026C-4367-BBBA-2125AECF6C08"), typeof(float)); 63 RegisterType(new Guid("8B49821A-3ADC-4715-9DB1-08E2F3CFDF15"), typeof(double)); 64 RegisterType(new Guid("7BB386BF-6FD4-443D-A6C1-387096798C67"), typeof(DateTime)); 65 RegisterType(new Guid("724A2D49-7E7B-455B-BBA9-4214C64E8A21"), typeof(TimeSpan)); 66 RegisterType(new Guid("4DB2ED2B-D9F2-4695-B555-A2CF42740740"), typeof(Color)); 67 RegisterType(new Guid("9BC74087-D5C0-4C39-99B4-D7465F478492"), typeof(Point)); 68 RegisterType(new Guid("E84C326A-7E14-4F28-AEFF-BC16CC671655"), typeof(KeyValuePair<,>)); 69 RegisterType(new Guid("F0280B55-25E8-4981-B309-D675D081402A"), typeof(string)); 70 // Enum? 71 RegisterType(new Guid("859B7E34-3A07-41A3-AE93-79DCE5A1DB2C"), typeof(Type)); 72 RegisterType(new Guid("D15AD28B-203A-460E-815C-F7230C4B1F75"), typeof(bool[])); 73 RegisterType(new Guid("EE318DC4-580D-4DB1-9AAD-988B0E50A3DB"), typeof(byte[])); 74 RegisterType(new Guid("326B9484-361F-46F8-B8A6-46C781A8C51F"), typeof(sbyte[])); 75 RegisterType(new Guid("C854783D-4C91-43C8-A19A-F96012494F8A"), typeof(short[])); 76 RegisterType(new Guid("C47FB329-2A1D-4EB7-AFB1-1CF72AB30E98"), typeof(ushort[])); 77 RegisterType(new Guid("9681D044-B50C-4907-B23E-BDFEBC6C3FFC"), typeof(char[])); 78 RegisterType(new Guid("0FC62D91-D63F-4507-8696-885D4C07285A"), typeof(int[])); 79 RegisterType(new Guid("C43A25A0-9B99-4DA4-9279-7495FE10428E"), typeof(uint[])); 80 RegisterType(new Guid("7AC4DDAC-0E13-428E-BF49-7BE7B76746CB"), typeof(long[])); 81 RegisterType(new Guid("8D9283A7-FE49-4AEA-A09F-D53CF3BE520A"), typeof(ulong[])); 82 RegisterType(new Guid("BB9CFA0B-DD29-4C44-85C6-3A6289C55448"), typeof(float[])); 83 RegisterType(new Guid("3B3AA69E-1641-4202-AE1D-7EEFF60FA355"), typeof(double[])); 84 RegisterType(new Guid("7DF325A6-2553-4915-B7C6-D98191107CB7"), typeof(string[])); 85 foreach (var asm in AppDomain.CurrentDomain.GetAssemblies()) { 86 foreach (var t in asm.GetTypes().Where(x => StorableClassAttribute.IsStorableClass(x))) 87 RegisterType(StorableClassAttribute.GetStorableClassAttribute(t).Guid, t); 88 } 89 90 RegisterExtension(BoolBox.Bool); 91 RegisterExtension(IntBox.Int); 92 RegisterExtension(LongBox.Long); 93 RegisterExtension(UnsignedIntBox.UnsignedInt); 94 RegisterExtension(UnsignedLongBox.UnsignedLong); 95 RegisterExtension(FloatBox.Float); 96 RegisterExtension(DoubleBox.Double); 97 RegisterExtension(StringBox.String); 98 RegisterExtension(BytesBox.Bytes); 99 RegisterExtension(BoolArrayBox.BoolArray); 100 RegisterExtension(IntArrayBox.IntArray); 101 RegisterExtension(LongArrayBox.LongArray); 102 RegisterExtension(UnsignedIntArrayBox.UnsignedIntArray); 103 RegisterExtension(UnsignedLongArrayBox.UnsignedLongArray); 104 RegisterExtension(FloatArrayBox.FloatArray); 105 RegisterExtension(DoubleArrayBox.DoubleArray); 106 RegisterExtension(StringArrayBox.StringArray); 107 RegisterExtension(MatrixBox.Matrix); 108 RegisterExtension(BoolMatrixBox.BoolMatrix); 109 RegisterExtension(IntMatrixBox.IntMatrix); 110 RegisterExtension(DictionaryBox.Dictionary); 42 111 } 43 public void Initialize() { 112 113 public void RegisterTransformer(ITransformer transformer) { 44 114 lock (locker) { 45 guid2Transformer = new Dictionary<Guid, ITransformer>(); 46 transformer2Guid = new Dictionary<ITransformer, Guid>(); 47 guid2Type = new Dictionary<Guid, Type>(); 48 type2Guid = new Dictionary<Type, Guid>(); 49 typeInfos = new Dictionary<Type, TypeInfo>(); 50 extensionRegistry = ExtensionRegistry.CreateInstance(); 51 52 foreach (var transformer in ApplicationManager.Manager.GetInstances<ITransformer>().OrderBy(x => x.Priority)) { 53 guid2Transformer.Add(transformer.Guid, transformer); 54 transformer2Guid.Add(transformer, transformer.Guid); 55 } 56 57 RegisterType(new Guid("94AD8522-3F55-4580-A6F8-2D2AAEDD4B8C"), typeof(bool)); 58 RegisterType(new Guid("4A1C0FD5-423D-4F96-AB22-A496578C25AC"), typeof(byte)); 59 RegisterType(new Guid("C4B00F0B-FED7-439F-B1B2-8A0048B64882"), typeof(sbyte)); 60 RegisterType(new Guid("9F451811-3DE1-43AB-8B74-D7E03851857B"), typeof(short)); 61 RegisterType(new Guid("46244D54-0145-49F7-9CF3-9CDB7FB5F240"), typeof(ushort)); 62 RegisterType(new Guid("1FDDE40C-09E3-491F-8FBB-32BB3C885E9E"), typeof(char)); 63 RegisterType(new Guid("EE3E0F9C-A5C2-4461-AF36-28BD8F26E6FB"), typeof(int)); 64 RegisterType(new Guid("69476D18-D285-43E9-BC7C-6CC9E9F2321E"), typeof(uint)); 65 RegisterType(new Guid("7C7BC5EC-F001-4BA0-9F85-50DCBAA9AE81"), typeof(long)); 66 RegisterType(new Guid("AC808D5A-63BB-457C-9B92-C9B83DA2B139"), typeof(ulong)); 67 RegisterType(new Guid("BF22653A-026C-4367-BBBA-2125AECF6C08"), typeof(float)); 68 RegisterType(new Guid("8B49821A-3ADC-4715-9DB1-08E2F3CFDF15"), typeof(double)); 69 RegisterType(new Guid("7BB386BF-6FD4-443D-A6C1-387096798C67"), typeof(DateTime)); 70 RegisterType(new Guid("724A2D49-7E7B-455B-BBA9-4214C64E8A21"), typeof(TimeSpan)); 71 foreach (var asm in AppDomain.CurrentDomain.GetAssemblies()) { 72 foreach (var t in asm.GetTypes().Where(x => StorableClassAttribute.IsStorableClass(x))) 73 RegisterType(StorableClassAttribute.GetStorableClassAttribute(t).Guid, t); 74 } 75 76 RegisterExtension(BoolBox.Bool); 77 RegisterExtension(IntBox.Int); 78 RegisterExtension(LongBox.Long); 79 RegisterExtension(UnsignedIntBox.UnsignedInt); 80 RegisterExtension(UnsignedLongBox.UnsignedLong); 81 RegisterExtension(FloatBox.Float); 82 RegisterExtension(DoubleBox.Double); 83 RegisterExtension(StringBox.String); 84 RegisterExtension(BytesBox.Bytes); 85 RegisterExtension(BoolArrayBox.BoolArray); 86 RegisterExtension(IntArrayBox.IntArray); 87 RegisterExtension(LongArrayBox.LongArray); 88 RegisterExtension(UnsignedIntArrayBox.UnsignedIntArray); 89 RegisterExtension(UnsignedLongArrayBox.UnsignedLongArray); 90 RegisterExtension(FloatArrayBox.FloatArray); 91 RegisterExtension(DoubleArrayBox.DoubleArray); 92 RegisterExtension(StringArrayBox.StringArray); 93 RegisterExtension(MatrixBox.Matrix); 94 RegisterExtension(BoolMatrixBox.BoolMatrix); 95 RegisterExtension(IntMatrixBox.IntMatrix); 96 RegisterExtension(DictionaryBox.Dictionary); 115 guid2Transformer.Add(transformer.Guid, transformer); 116 transformer2Guid.Add(transformer, transformer.Guid); 97 117 } 98 118 } 99 100 119 public void RegisterType(Guid guid, Type type) { 101 120 lock (locker) { … … 105 124 } 106 125 public void RegisterExtension<TExtension>(GeneratedExtensionBase<TExtension> extension) { 107 extensionRegistry.Add(extension); 126 lock (locker) { 127 extensionRegistry.Add(extension); 128 } 108 129 } 109 130
Note: See TracChangeset
for help on using the changeset viewer.