Здравствуйте, IT, Вы писали:
А>>Падает на выделенной строке.
А>>BLToolkit.Mapping.MappingException: Wrong mapping field name: 'col1', type: 'Object1'. Use field name 'col2' instead.
IT>Регистр имеет значение. Нужно, чтобы везде было либо col1, либо Col1.
Не помогло. Дело не в регистре. Похоже на то, что так оно и планировалось.
При вызове ObjectMapper["col1"] в строке (1) мы получаем маппер "col1" -> Col1.
Затем в строке (2) выясняем, что у Col1 уже есть другой маппер, и выбрасываем исключение.
Почему выбрасываем исключение, а не возвращаем null?
class ObjectMapper {
public MemberMapper this[string name]
{
get
{
if (name == null) throw new ArgumentNullException("name");
MemberMapper mm = (MemberMapper)_nameToMember[name];
if (mm == null)
{
lock (_nameToMember.SyncRoot)
{
mm = (MemberMapper)_nameToMember[name];
if (mm == null)
{
mm = (MemberMapper)_nameToMember[name.ToLower(CultureInfo.CurrentCulture)];
if (mm == null)
{
mm = GetComplexMapper(name, name); // (1)
if (mm != null)
{
if (_members.Contains(mm)) // (2)
throw new MappingException(string.Format(
"Wrong mapping field name: '{0}', type: '{1}'. Use field name '{2}' instead.",
name, _typeAccessor.OriginalType.Name, mm.Name));
Add(mm);
}
}
else
_nameToMember[name] = mm;
}
}
}
return mm;
}
}
//Совсем не критично, в конце концов я могу свойство переименовать, но лучше, если не придется этого делать.