У меня есть статический класс «По умолчанию», который должен содержать матрицы по умолчанию, которые пересылаются на интерфейс, который запрашивает double[][]
в конце.До сих пор я просто помещал в этот класс статические свойства, которые возвращают double[][]
s.
. Теперь, чтобы это соответствовало стандартам кодирования нашей компании, код должен соответствовать правилу FxCop CA1819 , котороене позволит мне вернуть неровный массив из свойства, как я сделал.И вместо массивов я верну IList
или IEnumerable
(как обсуждено здесь ).
«Достаточно справедливо», - подумал я, поэтому я реализовал свойство для возврата IList<IList<double>>
(хотя вложенные типы тоже не круты).Однако, как я уже сказал, интерфейс, с которым мне нужно работать, в конце запрашивает double[][]
матрицы. Я понятия не имею, как получить этот список списков в массив массивов без явного преобразования каждого списка обратно..Конечно, я мог бы, но это создало бы безумное количество накладных расходов, тем более что я даже не получаю доступ к этим матрицам - я только передаю их через интерфейс.
(PS: я знаю, этоОшибка интерфейса, но на данный момент мы не можем это изменить.)
Редактировать: я обнаружил, что использование ILists<IList<double>>
не помогает в любом случае, поскольку оно нарушает CA1006 .Простое решение, которое я принял, чтобы заставить FxCop замолчать, было сделать свойства внутренними.В любом случае, более хорошее решение указано ниже.В качестве альтернативы можно рассмотреть возможность использования индексированного свойства, хотя это немного запутанно в C #.