3
SimpleIOCパターンを実装した最新のMVVM Lightツールキットv4(NuGetプレビューv4.1.21、DLL v:4.0.21.25725)を使い始めました。私ViewModelLocator.csでMVVM LightとSimpleIOCのデザインタイムリポジトリを使用
、私は両方の設計およびランタイムのリポジトリを処理するために、次のいる:
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
if (ViewModelBase.IsInDesignModeStatic)
{
SimpleIoc.Default.Register<IWebRepository, DesignWebRepository>();
}
else
{
SimpleIoc.Default.Register<IWebRepository, WebRepository>();
}
SimpleIoc.Default.Register<MainViewModel>();
}
public MainViewModel Main
{
get
{
return ServiceLocator.Current.GetInstance<MainViewModel>();
}
}
しかし、これは私にデザイナー(そうコンパイルエラーなし、またランタイムエラーで、次の例外を与えますが、私は見るために私の混合性を)失う:
Class Repository.IWebRepository is already registered
コール)
IWebRepository(最初.Register(で):
public interface IWebRepository
{
string Test(string data);
}
DesignWebRepository:
public class DesignWebRepository : IWebRepository
{
public string Test(string data)
{
return "design result: " + data;
}
}
WebRepository:
public class WebRepository : IWebRepository
{
public string Test(string data)
{
return "result: " + data;
}
}
MainViewModel:私はここで何を
public class MainViewModel : ViewModelBase
{
IWebRepository webRepository;
public MainViewModel(IWebRepository webRepository)
{
this.webRepository = webRepository;
if (IsInDesignMode)
{
// Code runs in Blend --> create design time data.
}
else
{
// Code runs "for real"
}
}
}
をしないのですか?
コードは正常です。このMVVM Light 4ですか?私はクラスとインターフェイスの定義を表示する必要があると思います。 – Phil
コードが更新されました。 –
あなたのコードは大丈夫です。私はMVVM Light v4.0.30319を持っています。ちなみに、私はあなたのSOガジェットが好きです。恥ずかしながら、それは反応を示さない。 – Phil