поиск определенного сеттера программно - PullRequest
1 голос
/ 09 февраля 2012

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

  foreach (Setter setter in dataRecord.Cells[i].Field.Settings.EditorStyle.Setters)
  {
    if (setter.Property.Name == "Format")
    {
      excelWorkSheetRow.Cells[i + level].CellFormat.FormatString = setter.Value.ToString();
      break;
    }
  }

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

SetterBaseCollection не предоставляет никаких методов, кроме тех, которые унаследованы от Collection <>. Вы можете использовать метод расширения FindFirstOrDefault, чтобы получить нужный метод установки следующим образом:

var formatSetter=dataRecord.Cells[i].EditorStyle.Setters.OfType<Setter>()
    .FirstOrDefault(setter=>setter.Property.Name == "Format");
if (formatSetter!=null)
...

Хитрость в том, что SetterBaseCollection может содержать объект Setter и EventSetter. Только объекты Setter имеют свойство Property ..., поэтому вам нужно OfType <> для поиска только объектов Setter. Ваш код сломался бы, если бы кто-нибудь когда-либо добавил установщик событий к стилю.

0 голосов
/ 09 февраля 2012

Если ваш объект поддерживает интерфейс IEnumerable, вы можете использовать метод Where ().

Взгляните на следующую статью MSDN для примера

...