避けられないに直面して、[OK]をクリックします。 ASP.NETにはユーザースコープの設定はありません。混合クライアント/サーバ環境で使用されるクラスライブラリはそれらを使用すべきではありません!ここで
は私が終わったソリューションです:サーバー環境(ASP.NET)での使用のために
クラスライブラリのすべての設定がアプリケーションスコープでなければなりません。
クライアント環境(WPF)で使用するための2番目の設定を紹介します。これらの設定には、クラスライブラリのプロパティ名およびタイプと同じプロパティ名とタイプがありますが、スコープが異なり、メインアセンブリに配置されています。
小さなコードでは、ライブラリ設定クラスを拡張して、ユーザースコープ設定を挿入します。私は、ライブラリの設定に第二の設定クラスを注入することができ、この拡張子を持つ
namespace ClassLibrary.Properties
{
using System.Configuration;
public sealed partial class Settings {
private ApplicationSettingsBase injectedSettings;
public void InjectSettings(ApplicationSettingsBase settings)
{
injectedSettings = settings;
}
public override object this[string propertyName]
{
get
{
if (injectedSettings != null)
return injectedSettings[propertyName];
return base[propertyName];
}
set
{
base[propertyName] = value;
}
}
}
}
:
ClassLibrary.Properties.Default.InjectSettings(Application.Properties.Settings.Default);
あなたはライブラリを変更せずにこれを行うことができますどのように見ないでください。私は、ユーザーの設定がWindowsのユーザーフォルダに保存されていることを前提としています。明白な理由から、ASP.NETにはそのようなことはありません。 – Stilgar
@Stilgar:私はライブラリを変更することができますが、独自の設定クラスを導入することで、 "ホイールを再発明"したくありません。 –
クラスからの設定の実際の永続性を抽象化し、実装固有の永続性を提供することを検討しているかもしれませんが、同じクラスを扱いますが、Windows設定とASP.Netの設定を別々に扱うプロバイダを接続します。 –