Tôi đang phát triển một ứng dụng WPF với trợ giúp MVVM Light Toolkit 4.1.24. Đây là lớp ViewModel Locator của tôi.Không thể cung cấp địa chỉ điểm cuối trong khi đăng ký máy khách dịch vụ WCF với SimpleIOC trong 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();
}
}
đâu
IService1 - là một giao diện dịch vụ WCF
DesignDataService - Thực hiện các IService1 cho mục đích thiết kế
Service1Client - WCF Proxy lớp mà thực hiện IService1
Tôi có hai câu hỏi:
1) Trong khi chạy các ứng dụng, tôi đã nhận ra lỗi như thế này "Không thể đăng ký:. Nhiều nhà xây dựng tìm thấy trong Service1Client nhưng không ai được đánh dấu bằng PreferredConstructor". Cho rằng tôi đã thêm thuộc tính "[PreferredConstructorAttribute]" vào constructor mặc định Service1Client và ứng dụng chạy như mong đợi. Tôi biết nó không phải là một phương pháp tốt vì hai lý do
- nó sẽ gây ra một sự phụ thuộc vào SimpleIoc
- Bất cứ khi nào tôi cập nhật tài liệu tham khảo phục vụ tôi phải tự thêm thuộc tính này để các nhà xây dựng mặc định.
Vậy có phương pháp nào tốt hơn không?
2) Tôi muốn chuyển địa chỉ điểm cuối tới Service1Client theo cách thủ công. Làm thế nào tôi có thể làm điều đó?
Cảm ơn trước ...
để xóa câu hỏi hoặc thêm câu trả lời – Cybermaxs