Перечисление через свойства объекта (строка) в C#

Вы не говорите, является ли это настольным приложением или веб-приложением. Я использовал бы getResourceAsStream() метод от соответствующего ClassLoder, если это - рабочий стол или Контекст, если это - веб-приложение.

41
задан Matt 19 September 2009 в 00:14
поделиться

3 ответа

Использовать отражение. Это далеко не так быстро, как жестко запрограммированный доступ к свойствам, но он делает то, что вы хотите.

Следующий запрос генерирует анонимный тип со свойствами Name и Value для каждого строкового свойства в объекте myObject:

var stringPropertyNamesAndValues = myObject.GetType()
    .GetProperties()
    .Where(pi => pi.PropertyType == typeof(string) && pi.GetGetMethod() != null)
    .Select(pi => new 
    {
        Name = pi.Name,
        Value = pi.GetGetMethod().Invoke(myObject, null)
    });

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

foreach (var pair in stringPropertyNamesAndValues)
{
    Console.WriteLine("Name: {0}", pair.Name);
    Console.WriteLine("Value: {0}", pair.Value);
}
78
ответ дан 27 November 2019 в 00:23
поделиться

Для этого вы можете использовать отражение .... есть достойная статья на CodeGuru , но это может оказаться больше, чем вы ожидаете ... вы можете извлечь из него уроки, а затем подгоните его под свои нужды.

3
ответ дан 27 November 2019 в 00:23
поделиться

Как насчет чего-то вроде этого?

public string Prop1
{
    get { return dic["Prop1"]; }
    set { dic["Prop1"] = value; }
}

public string Prop2
{
    get { return dic["Prop2"]; }
    set { dic["Prop2"] = value; }
}

private Dictionary<string, string> dic = new Dictionary<string, string>();
public IEnumerable<KeyValuePair<string, string>> AllProps
{
    get { return dic.GetEnumerator(); }
}
-2
ответ дан 27 November 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: