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&lt;IBrokeredDataObject&gt;, 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.

War es hilfreich?

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" />
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top