public StructureSchemas(IStructureTypeFactory structureTypeFactory, IStructureSchemaBuilder structureSchemaBuilder) { Ensure.That(structureTypeFactory, "structureTypeFactory").IsNotNull(); Ensure.That(structureSchemaBuilder, "StructureSchemaBuilder").IsNotNull(); StructureTypeFactory = structureTypeFactory; StructureSchemaBuilder = structureSchemaBuilder; _schemas = new ConcurrentDictionary <Type, IStructureSchema>(); _schemaFactoryFn = t => StructureSchemaBuilder.CreateSchema(StructureTypeFactory.CreateFor(t)); }