我正在借助 MVVM Light Toolkit 4.1.24 开发 WPF 应用程序。这是我的 ViewModel Locator 类。
public class ViewModelLocator
{
/// <summary>
/// Initializes a new instance of the ViewModelLocator class.
/// </summary>
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
if (ViewModelBase.IsInDesignModeStatic)
{
// Create design time view services and models
SimpleIoc.Default.Register<IService1, DesignDataService>();
}
else
{
// Create run time view services and models
SimpleIoc.Default.Register<IService1, Service1Client>();
}
SimpleIoc.Default.Register<MainViewModel>();
}
public MainViewModel Main
{
get
{
return ServiceLocator.Current.GetInstance<MainViewModel>();
}
}
public static void Cleanup()
{
// TODO Clear the ViewModels
ServiceLocator.Current.GetInstance<MainViewModel>().Cleanup();
}
}
在哪里
IService1 - 是一个 WCF 服务接口
DesignDataService – 为设计目的实现 IService1
Service1Client – 实现 IService1 的 WCF 代理类
我有两个问题:
1)在运行应用程序时,我收到类似“无法注册:Service1Client 中找到多个构造函数但没有标记为 PreferredConstructor。”的错误。为此,我在 Service1Client 默认构造函数中添加了“[PreferredConstructorAttribute]”属性,并且应用程序按预期运行。我知道这不是一个好方法,原因有两个
- 这将导致对 SimpleIoc 的依赖
- 每当我更新服务引用时,我都必须手动将此属性添加到默认构造函数中。
那么有没有更好的方法呢?
2) 我想手动将端点地址传递给 Service1Client。我怎样才能做到这一点?
提前致谢...