Ich entwickle eine WPF-Anwendung mit der Hilfe von MVVM Light Toolkit 4.1.24. Hier ist meine ViewModel Locator-Klasse.Die Adresse des Endpunkts kann beim Registrieren des WCF-Dienstclients mit SimpleIOC in ViewModel Locator nicht angegeben werden
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();
}
}
Wo
IService1 - ist ein WCF-Service-Schnittstelle
DesignDataService - Implementierung von IService1 für die Gestaltung Zweck
Service1Client - WCF-Proxy-Klasse, die IService1 implementieren
Ich habe zwei Fragen:
1) Während die App laufen, ich einen Fehler wie diesen „registrieren kann nicht.: In Service1Client aber keine mit PreferredConstructor markiert gefunden Mehrere Konstruktoren“ bekam. Dafür habe ich das "[PreferredConstructorAttribute]" Attribut zum Service1Client Standardkonstruktor hinzugefügt und die Anwendung wie erwartet ausgeführt. Ich weiß, es ist keine gute Methode aus zwei Gründen
- es eine Abhängigkeit SimpleIoc
- führt Immer, wenn ich Dienstverweis aktualisiere ich manuell dieses Attribut auf den Standard-Konstruktor hinzuzufügen.
Gibt es also eine bessere Methode?
2) Ich möchte die Endpunktadresse manuell an Service1Client übergeben. Wie kann ich das machen?
Vielen Dank im Voraus ...
so löschen Sie Fragen oder fügen Sie eine Antwort hinzu – Cybermaxs