2010-02-12 2 views
1

Я попытался настроить соглашение о сопоставлении имен членов, чтобы исходные элементы, заканчивающиеся на «Id», сопоставлялись с целевыми членами без Id. НапримерAutoMapper: соглашение о соответствии имени элемента настройки

UserId -> Пользователь

Как это сделать один? Я попытался использовать SourceMemberNameTransformer без успеха. Также попытался использовать RecognizePostfixes().

this.SourceMemberNameTransformer = s => 
             {  
              return s.Replace("Id", string.Empty); 
             }; 
+0

Что такое 'this'? –

+0

это типof (Профиль) – epitka

+0

Что вы подразумеваете под "без успеха?" Опубликуйте полный рабочий пример, ожидаемое поведение и фактическое поведение, и вы с большей вероятностью получите хороший ответ. – Aaronaught

ответ

0

В настоящее время это не похоже на работу при настройке в Profile. Ни SourceMemberNameTransformer, ни RecognizePostfix Работа в Profile. Однако в глобальной конфигурации Automapper он работает нормально.

+0

4 года спустя он все еще не работает./cc @ jimmy-bogard – Mrchief

0

Это должно работать:

this.SourceMemberNameTransformer = s => 
      { 
       if (s.EndsWith("Id")) 
        return s.Substring(0, s.Length - 2);    
       return s; 
      }; 

Вы также можете попытаться добиться того, что с DestinationMemberNamingConvention и регулярным выражением.

+0

Это то же самое, что и у меня? – epitka

+0

Да. но вы рискуете любой строкой, содержащей «id», например Bid. ans EndsWith по умолчанию является секретным, поэтому он более безопасен. –

+1

String.Replace также чувствителен к регистру - * Этот метод выполняет поиск по порядку (с учетом регистра и без учета культуры), чтобы найти oldValue *. http://msdn.microsoft.com/en-us/library/fk49wtc1.aspx – statenjason

1

Вы можете также использовать «RecognizePostfixes» метод:

this.RecognizePostfixes("Id"); 

Встроенный трансформатор это, просто на будущее:

s => Regex.Replace(s, "(?:^Get)?(.*)", "$1"); 
+0

Это не работает внутри ['Profile'] (https://github.com/AutoMapper/AutoMapper/wiki/Configuration). – Mrchief

+0

Можете ли вы открыть вопрос GitHub? –

+0

https://github.com/AutoMapper/AutoMapper/issues/490 – Mrchief

Смежные вопросы