Hallo Ich versuche, C# -Reflexion zu verwenden, um eine Methode aufzurufen, die einen Parameter übergeben wird und im Gegenzug ein Ergebnis zurückgibt. Wie kann ich das machen? Ich habe ein paar Dinge ausprobiert, aber ohne Erfolg. Ich bin es gewohnt, PHP und Python, wo dies in einer einzigen Zeile erfolgen kann, so dass dies für mich sehr verwirrend ist.So verwenden Sie Reflektion zum Aufrufen von Methode nach Name
Im Wesentlichen ist dies, wie der Anruf ohne Reflexion gemacht würde:
response = service.CreateAmbience(request);
Anfrage hat diese Objekte:
request.UserId = (long)Constants.defaultAmbience["UserId"];
request.Ambience.CountryId = (long[])Constants.defaultAmbience["CountryId"];
request.Ambience.Name.DefaultText = (string)Constants.defaultAmbience["NameDefaultText"];
request.Ambience.Name.LanguageText = GetCultureTextLanguageText((string)Constants.defaultAmbience["NameCulture"], (string)Constants.defaultAmbience["NameText"]);
request.Ambience.Description.DefaultText = (string)Constants.defaultAmbience["DescriptionText"];
request.Ambience.Description.LanguageText = GetCultureTextLanguageText((string)Constants.defaultAmbience["DescriptionCulture"], (string)Constants.defaultAmbience["DescriptionDefaultText"]);
Diese meine Funktion ist die Reflexion, wo serviceAction für den Fall oben zu implementieren wäre "CreateAmbience":
public static R ResponseHelper<T,R>(T request, String serviceAction)
{
ICMSCoreContentService service = new ContentServiceRef.CMSCoreContentServiceClient();
R response = default(R);
response = ???
}
Danke Jon, ich probiere das gerade aus, aber ich ge t ein Fehler in der Zeile "object result = method.Invoke (service, neues Objekt [] {request});" - Parameteranzahl stimmt nicht überein. – Martin
Ich habe es gelöst. Ihre Lösung funktioniert, aber die Reflektion nahm nicht den Service Wrapper auf, der 1 Argument benötigte. Danke für Ihre Hilfe. – Martin