あなたは私にいくつかの例をお願いできますか?
このようなものです。コードを直接CultureInfo.InstalledUICulture
に連結するのではなく、現在のUIカルチャが何でも好きなように間接的なレイヤーを使用することができます。
私はあなたのクラスを知っていないか、あなたがサービスを作成する方法を、私はDIのいくつかの並べ替えを前提とし、(あなたがそれを呼び出すために好きまたはサービスまたは)プロバイダ
// App code
public interface ICurrentCultureProvider {
CultureInfo CurrentInstalledUICulture { get; }
}
public class CurrentCultureProvider : ICurrentCultureProvider {
public CultureInfo CurrentInstalledUICulture => CultureInfo.InstalledUICulture;
}
public class SUT {
private readonly ICurrentCultureProvider cultureProvider;
public SUT(ICurrentCultureProvider cultureProvider) {
this.cultureProvider = cultureProvider;
}
public object Method(??? vm) {
var currentUICulture = cultureProvider.CurrentInstalledUICulture;
var groups = new ObservableDictionary<string, IGroupViewModel>(vm => vm.Name.ToString(currentUICulture));
var isGroupExists = groups.ContainsKey(GroupName.ToString(currentUICulture));
if (!isGroupExists) {
groups.Add(new GroupViewModel());
}
return groups;
}
}
// Test code. Could make this return any culture by using a parameter.
public class GermanCultureProvider : ICurrentCultureProvider {
public CultureInfo CurrentInstalledUICulture => new CultureInfo("de-DE");
}
[TestFixture]
public class Sample_Test {
[Test]
public void Demo() {
var sut = new SUT(new GermanCultureProvider());
var vm = new ???();
var groups = sut.Method(vm);
// Assert correct in German etc
}
}
のコンストラクタのパラメータを使用しました
おそらくa)プロパティは[get only](http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.installeduiculture.aspx)であり、b)それは " Windows APIのGetSystemDefaultUILanguageに相当します。 "異なる文化の下で機能をテストしたい場合は、プロパティに直接アクセスせず、インダイレクションを使用して、 'InstalledUiCultureProvider'クラスのような、テストしたいものを返すことができます。 – stuartd
私に例を教えてもらえますか? –
'InstalledUICulture'をどのように使っているかを表示します。 – stuartd