Если вы просто хотите получить доступ к разделу appSettings
файла конфигурации, вы можете наследовать от класса DynamicObject
и переопределить метод TryGetMember
:
public class DynamicSettings : DynamicObject {
public DynamicSettings(NameValueCollection settings) {
items = settings;
}
private readonly NameValueCollection items;
public override bool TryGetMember(GetMemberBinder binder, out object result) {
result = items.Get(binder.Name);
return result != null;
}
}
Тогда, если предположить, что это ваш app.config
файл:
<configuration>
<appSettings>
<add key="FavoriteNumber" value="3" />
</appSettings>
</configuration>
... доступ к настройке 'FavoriteNumber' можно получить следующим образом:
class Program {
static void Main(string[] args) {
dynamic settings = new DynamicSettings(ConfigurationManager.AppSettings);
Console.WriteLine("The value of 'FavoriteNumber' is: " + settings.FavoriteNumber);
}
}
Обратите внимание, что попытка получить доступ к неопределенному ключу приводит к выдаче RuntimeBinderException
. Вы можете предотвратить это, изменив переопределенный TryGetMember
, чтобы он всегда возвращал true
, и в этом случае неопределенные свойства просто вернут null
.