Получить разные значения, используя динамическое ключевое слово
В моем веб-приложении я пытаюсь получить appsettings и раздел строк соединения, оцененный из web.config. Я использую динамическую клавиатуру, чтобы получить значения раздела. пожалуйста, смотрите мой код ниже
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Dynamic;
using System.Collections.Specialized;
using System.Configuration;
namespace SessiontimeoutCshp
{
public class AppSettingsWrapper:DynamicObject
{
private NameValueCollection _items;
private ConnectionStringSettingsCollection _connections;
public enum Configsections
{
Appsettings,
Connectionstrings
}
private string configsections;
public string ConfigSections
{
get { return configsections; }
set { configsections = value; }
}
public AppSettingsWrapper(Configsections conEnum)
{
switch (conEnum)
{
case Configsections.Appsettings:
_items = ConfigurationManager.AppSettings;
break;
case Configsections.Connectionstrings:
_connections = ConfigurationManager.ConnectionStrings;
break;
default:
break;
}
//if (conEnum.Equals(Configsections.Appsettings))
//{
// _items = (T)(object)ConfigurationManager.AppSettings;
//}
//if (conEnum.Equals(Configsections.Connectionstrings))
//{
// _connections = (T)(object)ConfigurationManager.ConnectionStrings;
//}
}
//private object GetSectionvalue<T>(T sectionReturn)
//{
//}
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
result = null;
if (_items != null)
{
result = _items[binder.Name];
}
if (_connections != null)
{
result = _connections[binder.Name];
}
return result != null;
//return base.TryGetMember(binder, out result);
}
public override bool TryConvert(ConvertBinder binder, out object result)
{
return base.TryConvert(binder, out result);
}
}
}
я обращаюсь к классу appsettingwrapper в default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Collections.Specialized;
namespace SessiontimeoutCshp
{
public partial class _Default : System.Web.UI.Page
{
public string str;
protected void Page_Load(object sender, EventArgs e)
{
// int i = Convert.ToInt32(ConfigurationManager.AppSettings["Sessiontimeout"]);
// object obj= ConfigurationManager.GetSection("membership");
dynamic appSettings = new AppSettingsWrapper(AppSettingsWrapper.Configsections.Appsettings);
//str = appSettings.SessionWarning;
// int testImplicit = appSettings.SessionWarning;
string str1 = LinkButton1.ClientID;
}
}
}
Здесь, когда я хочу получить значения для раздела appsettings, мне нужно создать экземпляр класса-оболочки с перечислением appsettings, а в следующей строке, если я хочу получить значение раздела строки соединения, мне нужно снова создать экземпляр класса-оболочки appsettings. Но я хочу получить оба значения, используя только один экземпляр класса-оболочки appsettings. Я пытался использовать свойства, но поскольку класс appsettingwrapper наследуется от динамического объекта, объявленные свойства недоступны в intellisense. Пожалуйста, дайте мне знать, как получить значения обоих разделов, используя один экземпляр класса appsettingswrapper. Пожалуйста, дайте мне знать, если требуется дополнительная информация.