Objekt vom Typ 'System.Object []' kann nicht in 'MyObject []' umgewandelt werden. Was gibt es?

Szenario:

Momentan schreibe ich eine Ebene, um 3 ähnliche Webservices in eine verwendbare Klasse zusammenzufassen. Jeder Webservice stellt eine Reihe von Objekten bereit, die Gemeinsamkeiten aufweisen. Ich habe eine Reihe von Zwischenobjekten erstellt, die die Gemeinsamkeiten ausnutzen. In meiner Ebene muss ich jedoch zwischen den Webdienstobjekten und meinen Objekten konvertieren.

Ich habe Reflection verwendet, um den entsprechenden Typ zur Laufzeit zu erstellen, bevor ich den Webdienst wie folgt aufrufe:

    public static object[] CreateProperties(Type type, IProperty[] properties)
    {
        //Empty so return null
        if (properties==null || properties.Length == 0)
            return null;

        //Check the type is allowed
        CheckPropertyTypes("CreateProperties(Type,IProperty[])",type);

        //Convert the array of intermediary IProperty objects into
        // the passed service type e.g. Service1.Property
        object[] result = new object[properties.Length];
        for (int i = 0; i < properties.Length; i++)
        {
            IProperty fromProp = properties[i];
            object toProp = ReflectionUtility.CreateInstance(type, null);
            ServiceUtils.CopyProperties(fromProp, toProp);
            result[i] = toProp;
        }
        return result;
    }

Hier ist mein Anrufcode aus einer meiner Service-Implementierungen:

Property[] props = (Property[])ObjectFactory.CreateProperties(typeof(Property), properties);
_service.SetProperties(folderItem.Path, props);

So macht jeder Dienst ein anderes "Property" -Objekt verfügbar, das ich hinter meiner eigenen Implementierung meiner IProperty-Schnittstelle verstecke.

Der Reflektionscode funktioniert in Komponententests und erzeugt ein Array von Objekten, deren Elemente vom entsprechenden Typ sind. Der aufrufende Code schlägt jedoch fehl:

System.InvalidCastException: Objekt vom Typ 'System.Object []' kann nicht in 'MyProject.Property []' umgewandelt werden

Irgendwelche Ideen?

Ich hatte den Eindruck, dass ein Cast von Object funktioniert, solange das enthaltene Objekt konvertierbar ist.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage