gpt4 book ai didi

c# - 在 ViewModel 定位器中使用 SimpleIOC 注册 WCF 服务客户端时无法提供端点地址

转载 作者:太空狗 更新时间:2023-10-29 19:47:11 26 4
gpt4 key购买 nike

我正在借助 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 服务接口(interface)

  • DesignDataService – 为设计目的实现 IService1

  • Service1Client – 实现 IService1 的 WCF 代理类

我有两个问题:

1) 在运行应用程序时,我收到类似这样的错误“无法注册:在 Service1Client 中找到多个构造函数,但没有一个标有 PreferredConstructor。”。为此,我向 Service1Client 默认构造函数添加了“[PreferredConstructorAttribute]”属性,应用程序按预期运行。我知道这不是一个好方法有两个原因

  • 它将导致对 SimpleIoc 的依赖
  • 每当我更新服务引用时,我都必须手动添加它属性给默认构造函数。

那么有没有更好的方法呢?

2) 我想手动将端点地址传递给 Service1Client。我该怎么做?

提前致谢...

最佳答案

您可以通过以下方法将端点地址添加到服务客户端。

SimpleIoc.Default.Register(() => new Service1Client("WSHttpBinding_IService", wcfConfig.EndpointUrl));

关于c# - 在 ViewModel 定位器中使用 SimpleIOC 注册 WCF 服务客户端时无法提供端点地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13378641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com