2016-08-15 1 views
3

При использовании IList<Dictionary<string, string>> в качестве типа параметра в метод декларации нарушения FXCop происходитнарушение FXCop для родовых типов

Оно не гнездо общего типа IList<Dictionary<string, string>>

Как я могу решить эту проблему?

+1

См. [Есть ли хорошие способы обхода предупреждения FxCop CA1006?] (Http://stackoverflow.com/questions/417634/are-there-any-good-workarounds-for-fxcop-warning-ca1006) – Marusyk

+1

Также это [Альтернатива вложенному типу типа Expression >] (http://stackoverflow.com/questions/3441563/alternative-to-nested-type-of-type-expressionfunct) – Marusyk

+0

Вы можете создать класс, содержащий список, но я будет игнорировать это правило. –

ответ

2

Причина для этого является:

Вложенный тип аргумента является аргументом типа, который также является универсальным типом. Чтобы вызвать элемент, чья подпись содержит вложенный аргумент типа, пользователь должен создать экземпляр одного типа и передать этот тип в конструктор второго типа. Необходимая процедура и синтаксис являются сложными и их следует избегать.

Это поможет вам разработать более простой интерфейс. У вас есть 3 случая:

Вы можете попробовать:

public void Method(Dictionary<string, string> param) 

и использование:

var list = new IList<Dictionary<string, string>>(); 
list.Add(new Dictionary<string, string>{{"key1", "value1"}, {"key2", "value2"}}); 
list.Add(new Dictionary<string, string>{{"key11", "value11"}, {"key22", "value22"}}); 

foreach(var element in list) 
{ 
    Method(element); 
} 
Смежные вопросы