Вы не говорите, является ли это настольным приложением или веб-приложением. Я использовал бы getResourceAsStream()
метод от соответствующего ClassLoder, если это - рабочий стол или Контекст, если это - веб-приложение.
Использовать отражение. Это далеко не так быстро, как жестко запрограммированный доступ к свойствам, но он делает то, что вы хотите.
Следующий запрос генерирует анонимный тип со свойствами 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);
}
Для этого вы можете использовать отражение .... есть достойная статья на CodeGuru , но это может оказаться больше, чем вы ожидаете ... вы можете извлечь из него уроки, а затем подгоните его под свои нужды.
Как насчет чего-то вроде этого?
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(); }
}