DynamoDbを利用するには、アプリケーションで新しいDynamoDbAppSettingsクラスを使用することに決めました。私はそんなに明確ではないよ何カスタムAppSettingクラスをServiceStackのMultiAppSettingクラスに置き換えるにはどうすればよいですか?
public class MyAppSettings : AppSettings
{
public ApplicationEnvironment Environment
{
get { return Get("Environment", ApplicationEnvironment.Development); }
}
public List<string> AdministratorEmails
{
get { return Get("AdminEmailAddresses", new List<string>()); }
}
public string CompanyReadConnectionString
{
get
{
string settingsName = "CompanyReadConnectionString_{0}".Fmt(Environment);
return Get(settingsName, string.Empty);
}
}
}
がMultiAppSettingsへの移行を作成する方法である:我々は現在のAppSettingsから継承するカスタムクラス(下記に示すクラスの一部)を使用しています。例えば、我々は現在、そのように私たちのAppSettingsを登録します。
//Custom App settings
container.RegisterAutoWired<MyAppSettings>();
MyAppSettings appSettings = container.Resolve<MyAppSettings>();
そして、私は、カスタムクラスにチェックされているなど、デフォルトのすべてで、非常に簡単に私のアプリの設定にアクセスするのappSettingsの変数を使用することができ、プラス私のアプリケーション全体に散らばっている "魔法の弦"の利点はありません。例として、私は簡単に介して、デバッグモードを取得することができます:
DynamoDBのためにappSettings.DebugMode
、私が例に示されているもののようなコードを追加しました:
MultiAppSettings multiAppSettings = new MultiAppSettings(
new DynamoDbAppSettings(
new PocoDynamo(AwsConfig.CreateAmazonDynamoDb()), true),
new MyAppSettings());
をしかし、私は仕事をするかは不明ですこの時点でそれと一緒に。上記のようなMultiAppSettingsで動作するカスタムクラスを作成するにはどうすればよいですか?もしそうなら、どうすればそれを登録し、私のアプリの設定にアクセスできますか? MultiAppSetting変数を宣言する際に、既存のカスタムクラスをフォールバックとして使用するのが適切ですか? DynamoDbAppSettingsを扱うためのポインタがあれば、それ以上感謝します。
感謝を。上記の例では、AppSettingsをMultiAppSettingsに基づいてカスタムクラス、つまりAppSettings = new MyAppSettings(新しいDynamoDbAppSettings(新しいPocoDynamo(AwsConfig.CreateAmazonDynamoDb())、true)) 'に設定します。私はAppSettingsを参照することができますが、コードは自分のカスタムクラスであることを知らない。 '(MyAppSettings)AppSettings.MyProperty'を使用しても機能しません。私は 'var appSettings = AppSettings as MyAppSettings'を使うことができましたが、それは扱いにくいです。助言がありますか? – TortillaCurtain
@TortillaCurtainこれはちょうど普通のC#です。IAppSettingsの背後にある考え方は、あなたのクラスがあなたの具体的なAppSettingsプロバイダを知っているとは思われないので、後でAppSettingソースを、私はあなたの具体的な型にキャストすることを強くお勧めしますが、それをやりたければ、型付き拡張メソッドの背後にあるプロパティへのアクセスを隠すことができます。 – mythz
私の場合は、厳密に型指定されたAppSettingsクラスを持っていて、それや私のコードを混乱させたくありません。私は 'AppAettings'の代わりに' MultiAppSettings'に基づいてこの既存のクラスを作ることを望んでいました。宣言でAppSettingsをMultiAppSettingsに変更すると、魔法の文字列を使用してAppSettingsをどこからでも参照できるようになりますが、今は 'appSettings.Property'を使用するだけで、コンパイル時のエラーについて知ることができます。私はServiceStack 4 Cookbookからラッパーのアイデアを得ましたが、MultiAppSettingsルートに行くとこのメソッドは使用できなくなりましたか? – TortillaCurtain