Ich habe nach einer Möglichkeit gesucht, die Elemente einer Sammlung (ich habe mich nicht entschieden, welche Art von Sammlung) zu einem Object[]
verschieben. Ich versuche, eine Methode durch Reflektion aufzurufen, indem ich den Parameter der aufrufenden Methode (die Sammlung) als Parameter der aufgerufenen Methode verwende.Konvertieren einer Sammlung in ein Objekt []
Ich habe ein Paar (UPDATE) von Methoden, auf die ich über eine REST-API zugreifen möchte, die wiederum unterschiedliche Mengen an Parametern erfordert. Als solche habe ich mich entschieden, eine Sammlung als einen der Parameter zu verwenden, den die REST API Update
erfordert. Aber da ich eine Methode aus der Reflektion aufrufen muss, muss ich die Sammlung auch irgendwie zu einer Object[]
parsen/casten.
Das ist, was ich jetzt habe, und wie bereits erwähnt scheine ich ein bisschen stecken ...
auch sein, bitte beachten Sie, dass dies nicht eine Frage ist, wie der REST-Dienst einzurichten (wie meine andere), sondern einfach, wie man die Sammlung am besten auf die richtigen Aufrufparameter überträgt. Darüber hinaus wird jede Hilfe oder Beratung in Bezug auf die Art der Sammlung sehr geschätzt.
public void Update(String proc, List<String> parameters)
{
var myType = typeof(JaberoDC.JaberoDC.JaberoDC);
var list = parameters;
var method = myType
.GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly)
.Single(mi => string.Equals(mi.Name, proc, StringComparison.OrdinalIgnoreCase));
var subject = Activator.CreateInstance(myType);
var result = method.Invoke(subject, list);
}
Hier sind zwei Beispiele von Methoden, die ich zu berufen beabsichtigen:
public bool UPDATEActivities(int? iID, int? iWorksiteID, string strActivityName, string strMethodOfWork, DateTime? dtPlannedStart, DateTime? dtActualStart, DateTime? dtPlannedFinish, DateTime? dtActualFinish, bool? blMileStoneFlag, bool? blActivityCutShort, int? iInterruptionMinutes, string strVarianceReason, string strConn, string strUserName);
public bool UPDATEWorksiteEntry(int? iID, string strJobName, string strJobID, string strSiteName, int? iCalendarWeek, int? iMainContractor, string strJobStartFrom, string strJobEndAt, string strSACStaffAssigned, string strReferenceNumber, int? iTerritory, string strFunction, string strItemNumber, string strLine, int? iWorksiteType, string strUID, string strEventNumber, string strRestrictions, string strLatitude, string strLongitude, string strPlannedWork, int? iPlannedStartMileage, int? iPlannedFinishMileage, DateTime? dtPlannedStart, DateTime? dtActualstart, DateTime? dtPlannedFinish, DateTime? dtActualFinish, int? iActualFinishMileage, int? iActualFinishYardage, int? iActualStartMileage, int? iActualStartYardage, int? iPlannedFinishYardage, int? iPlannedStartYardage, string strSACDayPhoneNo, string strSACNightPhoneNo, string strELR, string strSacPoint, bool? blTunnelSignIn, string strConn, string strUserName);
Was ist die Frage und wo ist Ihr aktuelles Problem im gebuchten Code? – Quantic
Oh, dachte es war offensichtlich. Ich bin im Grunde Delirium, nachdem ich den gleichen Code für ein paar Stunden angeschaut habe. Grundsätzlich bin ich nicht sicher, wie Sie die Methode mit den Elementen in der Liste (Parameter) als Parameter der aufgerufenen Methode aufrufen. – geostocker
Danke auch für den Schnitt, Servy. :) – geostocker