private static TypeEngine Create(Type type) { TypeEngine descriptor = new TypeEngine(); descriptor.Persist = new DataPersist(type, null, AllowNull.OnlyMembers); if (DataTypeUtils.IsAllPrimitive(type) || type == typeof(Guid)) { descriptor.Comparer = new DataComparer(type); descriptor.EqualityComparer = new DataEqualityComparer(type); if (type != typeof(Guid)) descriptor.IndexerPersist = new DataIndexerPersist(type); } return descriptor; }
private static TypeEngine Create(Type type) { TypeEngine descriptor = new TypeEngine(); descriptor.Persist = new DataPersist(type, null, AllowNull.OnlyMembers); if (DataTypeUtils.IsAllPrimitive(type) || type == typeof(Guid)) { descriptor.Comparer = new DataComparer(type); descriptor.EqualityComparer = new DataEqualityComparer(type); if (type != typeof(Guid)) { descriptor.IndexerPersist = new DataIndexerPersist(type); } } return(descriptor); }
private void DoPrepare() { Debug.Assert(KeyType != null); Debug.Assert(RecordType != null); //keys if (KeyComparer == null || KeyEqualityComparer == null || (KeyPersist == null || KeyIndexerPersist == null)) { if (keyEngine == null) { keyEngine = TypeEngine.Default(KeyType); } if (KeyComparer == null) { KeyComparer = keyEngine.Comparer; } if (KeyEqualityComparer == null) { KeyEqualityComparer = keyEngine.EqualityComparer; } if (KeyPersist == null) { KeyPersist = keyEngine.Persist; } if (KeyIndexerPersist == null) { KeyIndexerPersist = keyEngine.IndexerPersist; } } //records if (RecordPersist == null || RecordIndexerPersist == null) { if (recEngine == null) { recEngine = TypeEngine.Default(RecordType); } if (RecordPersist == null) { RecordPersist = recEngine.Persist; } if (RecordIndexerPersist == null) { RecordIndexerPersist = recEngine.IndexerPersist; } } //container if (DataContainerPersist == null) { if (KeyIndexerPersist != null && RecordIndexerPersist != null) { DataContainerPersist = new DataContainerPersist(KeyIndexerPersist, RecordIndexerPersist, DataContainerFactory); } else { DataContainerPersist = new DataContainerPersist(KeyPersist, RecordPersist, DataContainerFactory); } } //operations if (OperationsPersist == null) { OperationsPersist = new OperationCollectionPersist(KeyPersist, RecordPersist, OperationCollectionFactory); } IsReady = true; }