2010-12-06 5 views
0

현재 ASP.NET 4.0 웹 응용 프로그램을 일반 IIS와 Azure에서 모두 실행하도록 리팩토링하고 있습니다. 설정 (Properties 네임 스페이스)에서는 AzureSettingsStateStandaloneSettingsState으로 State Pattern을 구현하고 싶습니다. 둘 다 설정 getter 메서드를 제공합니다.ASP.NET 웹 응용 프로그램 하늘색 설정

이제는 아무도 ASP.NET이 비 문자열 값 (예 : TimeSpan 또는 StringCollection)을 deserialize하는 방법을 파악하여 상황에 맞는 클래스로 직접 deserialize 할 수 있습니까? 모든 설정은 문자열로 보입니다. 그것을 사용하는 푸른에게 잊지 마세요 D

public class AzureConfig:StandaloneConfig 
{ 
    protected override string GetAppSetting(string name) 
    { 
     return RoleEnvironment.GetConfigurationSettingValue(name); 
    } 

    protected override string GetConnectionString(string name) 
    { 
     return RoleEnvironment.GetConfigurationSettingValue(name); 
    } 
} 

public class StandaloneConfig 
{ 
    public IndexedSetting AppSettings { get; private set; } 
    public IndexedSetting ConnectionStrings { get; private set; } 

    public StandaloneConfig() 
    { 
     AppSettings = new IndexedSetting(GetAppSetting); 
     ConnectionStrings = new IndexedSetting(GetConnectionString); 
    } 

    protected virtual String GetAppSetting(String name) 
    { 
     return ConfigurationManager.AppSettings[name]; 
    } 

    protected virtual String GetConnectionString(String name) 
    { 
     var cs = ConfigurationManager.ConnectionStrings[name]; 
     if (cs != null) 
      return cs.ConnectionString; 
     else 
      return null; 
    } 

    public class IndexedSetting 
    { 
     Func<String, String> _getParameter; 

     public IndexedSetting(Func<String,String> getParameter) 
     { 
      _getParameter = getParameter; 
     } 

     public String this[String name] 
     { 
      get { return _getParameter(name); } 
     } 
    } 

:

public abstract class ConfigStateBase 
{ 
    public abstract string GetSettingValue(string setting); 
} 

답변

0

나는 그것이 작동하는 경우, 아직 모르는 이런 일을했습니다!

static AzureConfig _config = new AzureConfig(); 

    void Application_Start(object sender, EventArgs e) 
    { 
     Microsoft.WindowsAzure.CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) => 
     { 
      configSetter(_config.AppSettings[configName]); 
     }); 

    } 

당신이 그것을 사용하는 경우 것은 내가 그렇게된다면 내가 알고 싶어 말은 ... 내가 돈을 받고 싶어 알려주세요 : D

관련 문제