2IT: еще про мапинги
От: Lexey Россия  
Дата: 22.06.16 14:28
Оценка:
Попытался я тут использовать MappingSchema в отрыве от Linq2db. И слегка обломался.
Мне думалось, что если я зову MappingSchema.SetConverter для какой-то пары типов, то потом я смогу его использовать через Converter.ChangeType(obj, type, mappingSchema) или хотя бы через MappingSchema.ChangeType. Но, облом. Вместо моего конвертера упорно вызывается дефолтовый.
Это так и задумывалось?
                var li =
                    ConvertInfo.Default.Get   (               value.GetType(), to) ?? // видимо срабатывает вот это
                    ConvertInfo.Default.Create(mappingSchema, value.GetType(), to); // а сюда не доходит


В общем, пришлось пока свои велосипеды изобретать, подглядывая в твой код.
"Будь достоин победы" (c) 8th Wizard's rule.
Re: 2IT: еще про мапинги
От: IT Россия linq2db.com
Дата: 23.06.16 02:52
Оценка:
Здравствуйте, Lexey, Вы писали:

L>Попытался я тут использовать MappingSchema в отрыве от Linq2db. И слегка обломался.


А можешь тестик накидать. Посмотрю в чём там дело.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: 2IT: еще про мапинги
От: Lexey Россия  
Дата: 23.06.16 11:05
Оценка:
Здравствуйте, IT, Вы писали:

IT>А можешь тестик накидать. Посмотрю в чём там дело.


        [Test]
        public void TestCustomConverter()
        {
            var ms = new MappingSchema();
            ms.SetConverter((string s) => s.IsNullOrEmpty() ? default(int?) : int.Parse(s));
            Assert.That(ms.ChangeType("", typeof(int?)), Is.EqualTo(null));
        }

На выходе:
System.FormatException : Input string was not in a correct format.
   at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
   at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
   at lambda_method(Closure , Object )
   at LinqToDB.Common.Converter.ChangeType(Object value, Type conversionType, MappingSchema mappingSchema) in i:\linq2db\Source\Common\Converter.cs:line 129


Проблема именно при использовании MappingSchema из Linq2db. Для Codejam'овской работает правильно.
"Будь достоин победы" (c) 8th Wizard's rule.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.