Einschließlich einer generischen Klasse in Unity App.Config Datei
-
19-08-2019 - |
Frage
Ich habe eine Klasse vom Typ ISimpleCache<IBrokeredDataObject>
das möchte ich hinzufügen, dass als eine Art alias (dann ein Typ) in der App.Config Datei
die Zeile
<typeAlias alias="ISimpleCacheOfIBrokeredDataObject" type="MyApplication.ISimpleCache<IBrokeredDataObject>, MyApplication" />
ist offensichtlich falsch, da die <> aber ich bin nicht davon überzeugt, Ihnen zu entkommen;
<typeAlias alias="ISimpleCacheOfIBrokeredDataObject" type="MyApplication.ISimpleCache<IBrokeredDataObject>, MyApplication" />
ist korrekt.
Ich bin derzeit rippen meinen code auseinander zu benutzen Einheit, also bin zu weit von eine kompilierbare code-Basis zu testen, dies schnell, und hoffte auf eine Bestätigung hier.
Lösung
Check-out diese blog-post:
Um schreiben einen generischen Typ, verwenden Sie die
`
- Zeichen gefolgt von der Anzahl der generischen Typen, die die Schnittstelle/Klasse erhält.
Und einen Kommentar auf der gleichen Seite, sagte:
Um eine Konstante verwenden, geben Sie den generischen, die Sie brauchen, um verwenden Klammern (
[[ ]]
).
Also, ich denke, Ihre Konfigurationsdatei enthalten sollte so etwas wie dieses:
<typeAlias alias="ISimpleCacheOfIBrokeredDataObject"
type="MyApplication.ISimpleCache`1[[MyApplication.IBrokeredDataObject, MyApplication]], MyApplication" />
Hinweis: die Verwendung von "grave accent" oder "backquote-Zeichen" (`
), nicht die normale single-quote ('
).
Andere Tipps
Ich hätte Sie eher kommentiert die Antwort oben, aber mein Ergebnis ist nicht hoch genug.
Die syntax ist dokumentiert, für den Typ.GetType-Methode (string) hier: http://msdn.microsoft.com/en-us/library/w3f99sx1.aspx
Es gibt eine Reihe von Beispielen, von denen einige habe ich unten eingefügt.
Ein generischer Typ mit einem Typ-argument
Type.GetType("MyGenericType`1[MyType]")
Ein generischer Typ mit zwei Typ-Argumente
Type.GetType("MyGenericType`2[MyType,AnotherType]")
Ein generischer Typ mit zwei assembly-qualified type Argumente
Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Eine assembly-qualifizierten generischer Typ mit einem assembly-qualified type argument
Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Ein generischer Typ, dessen argument Typ ist ein generischer Typ mit zwei Typ-Argumente
Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")
Und dies ist, wie Sie ein Typ, der erhält zwei generische Typen:
<section name="doubleFamilyConfig"
type="ConfigTest.Configuration.FamilySection`2[
[ConfigTest.Types.Child, ConfigTest],
[ConfigTest.Types.Parent, ConfigTest]
],
ConfigTest" />
Sie verwenden können jede Art auf eine andere Zeile, wenn Sie es wünschen, so dass es einfacher ist, zu verstehen.Beachten Sie, dass die erste Klammer muss gleich nach dem Typ ( FamilySection`2**[** ).
Und das ist dringend unterzeichnet geben Sie als generischen parameter.
<typeAlias alias="IPublisherOfXElement" type="MyLib.IX.IPublisher`1[[System.Xml.Linq.XElement, System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], MyLib.IX" />