2009-07-22 11 views
1

Bitte ich habe eine Klasse in C#, deren Hauptfunktion ist, die Typen und Objekte als Wörterbuch über einen Service zurückgeben.Generieren Sie Cast-Typ dynamisch in C#

Ist es möglich, das Objekt sents über den WCF-Dienst im Frontend zu casten.

Verwenden Sie die Reflektion, um den Typ eines Objekts aus types.ToString() zu erhalten, und verwenden Sie den Typ zum Umwandeln der Objekte.

NB die Klasse, die das Wörterbuch und mein Frontend gibt es in verschiedenen Projekten sind so unterschiedliche Namespaces:

Type repType = typeof(List <>).MakeGenericType(Type.GetType(EntityandTypes[entity])); 
object rep = Assembly.GetAssembly(repType).CreateInstance(repType.FullName); 
grdResult.ItemsSource = 
    e.Result.ToList().Cast<typeof(Type.GetType(EntityandTypes[entity]))>(); 

Hinweis: EntityandTypes ist ein Wörterbuch, das Objekt und deren Typen enthält.

+0

möglich Duplikat (http://stackoverflow.com/questions/232535/how-to-use-reflection -to-call-generic-method) – nawfal

Antwort

2

Was möchten Sie mit den Cast-Werten machen? Casts machen in der Regel einen Unterschied bei Kompilierzeit während Sie für etwas bei Ausführungszeit fragen.

Wenn Sie erklären können, wie Sie das verwenden möchten, können wir Ihnen wahrscheinlich dabei helfen, es zu entwerfen.

+0

Ich gebe tatsächlich ein entityObjects und Binding an ein Datagrid in silverlight zurück. Ich möchte die Eigenschaften dieses entityObjects herausfinden und an es binden. Sagen Sie zum Beispiel Ich habe ein Ergebnis Liste en = e.Ergebnis e.Result gibt eine Liste von Entitäten zurück, aber ich muss wissen, welche Entity Object Sie wirklich sind. also brauche ich eine Methode wie diese Datagrid.itemSource = en.cast (); –

+0

Warum müssen Sie wissen, welcher Entitätstyp sie sind? Welchen Vorteil hätte das, wenn man bedenkt, dass Sie den Typ zum Zeitpunkt der Kompilierung nicht kennen? –

1

Über welche Typen sprechen wir? Klassen? Und welche Art von Service ist das?

Wenn es WCF ist, ist eine Option, Typ-Sharing zu verwenden, um die gleichen-Typ an jedem Ende zu verwenden, aber dies missbraucht SOA ein wenig. Sie können nicht eine Klasse zu einem ganz anderen Typ umwandeln, aber Sie können in eine andere Klasse projizieren. Verschiedene Ansätze für diese werden hier diskutiert: [? Wie Reflektion verwenden generische Methode aufzurufen]

How to copy value from class X to class Y with the same property name in c#?