Pattern Matching auf Generika in einer nicht generischen Methode, die eine Schnittstelle implementiert

Ich habe ein frustrierendes Problem. Ich baue einview engine in ASP.NET MVC und implementieren die Schnittstelle IViewEngine. Bei einer der Methoden versuche ich, den Typ des Ergebnisses einer Ansicht dynamisch zu ermitteln. Manchmal ist das Ergebnis eine Vorlage (mit dem Typ Vorlage <'Schlüssel>). Die Schlüssel werden verwendet, um auf einen Platzhalter in der Vorlage abzuzielen, und die Idee ist, eine diskriminierte Vereinigung zu verwenden, die möglicherweise für jede Website eindeutig ist. Es könnte so aussehen:

type MasterKey = | HeadContent | HeaderContent | MainContent | FooterContent
let MasterTemplate : Template<MasterKeys> = ...

Nun, das Problem ist folgendes: Da ich eine Schnittstelle implementiere, habe ich keine Kontrolle über die Methodensignatur. Da ich keinen generischen Typparameter hinzufügen kann, wird das 'a in ein obj konvertiert und die Vorlage entspricht nicht den folgenden Werten:

   match result with
   | :? foo -> ...
   | :? bar -> ...
   | :? Template<'a> -> ...

Irgendwelche Ideen

Antworten auf die Frage(4)

Ihre Antwort auf die Frage