BTDB.FieldHandler.DictionaryFieldHandler.SpecializeSaveForType C# (CSharp) Method

SpecializeSaveForType() public method

public SpecializeSaveForType ( Type type ) : IFieldHandler
type System.Type
return IFieldHandler
        public IFieldHandler SpecializeSaveForType(Type type)
        {
            if (_type == type) return this;
            if (!IsCompatibleWith(type))
            {
                Debug.Fail("strange");
                return this;
            }
            var wantedKeyType = type.GetGenericArguments()[0];
            var wantedValueType = type.GetGenericArguments()[1];
            var keySpecialized = _keysHandler.SpecializeSaveForType(wantedKeyType);
            if (_typeConvertorGenerator.GenerateConversion(wantedKeyType, keySpecialized.HandledType()) == null)
            {
                Debug.Fail("even more strange key");
                return this;
            }
            var valueSpecialized = _valuesHandler.SpecializeSaveForType(wantedValueType);
            if (_typeConvertorGenerator.GenerateConversion(wantedValueType, valueSpecialized.HandledType()) == null)
            {
                Debug.Fail("even more strange value");
                return this;
            }
            return new DictionaryFieldHandler(_fieldHandlerFactory, _typeConvertorGenerator, type, keySpecialized, valueSpecialized);
        }