Ehrlich, ich weiß nicht, wie ich das fragen soll. Lassen Sie mich zuerst mein Szenario erklären.Wie verwende ich dynamischen DataType in C#?
Vom answer, die ich von meiner letzten Frage bekommen haben:
...
var frame = sender as Frame;
UserControl1 uc1 = frame.Content as UserControl1;
MainViewModel mvm = uc1.DataContext as MainViewModel;
...
Wie Sie frame.Content
Änderungen sehen können und es können verschiedene Datentyp haben. Daher kann ich nicht einfach UserControl1
schreiben. Nun, was kann ich als Ersatz für UserControl1
schreiben?
Update: Added Details
frame.Content
verändert sich auf Interaktion mit dem Benutzer- ich den aktuellen Datentyp des
DataContext
vonframe.Content
während der Laufzeit
Wie immer bestimmen möchten, informieren Sie bitte Ich, wenn Sie eine Klarstellung wünschen.
Sie können keine Kompilierungszeitsicherheit haben, wenn Sie nicht wissen, was der _actual_-Typ (oder ein Subtyp) zur Kompilierungszeit ist. Wenn Sie eine kleine Anzahl möglicher Typen haben, die _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ~ ~ ~ ~ ~ ~ ~ | –
@DStanley Ja, da ich jetzt eine kleine Anzahl von möglichen Typen habe, könnte es sein, aber es ist ein laufendes Projekt, so dass die Anzahl der möglichen Typen zunehmen wird, wenn wir das ganze Projekt beenden. Muss ich den Typ manuell überprüfen? Es wird dann eine lange Reihe von if-Aussagen geben. – someone
@DStanley Eine andere Frage, wie wäre es, wenn alle 'DataContext' ein Feld mit dem Namen _title_ haben und es das einzige ist, auf das ich zugreifen möchte, ist es möglich, eine lange Reihe von if-Anweisungen zu vermeiden? – someone