2012-03-30 9 views
1

Ich habe ein neues Problem. Ich muss returnntype Parameter freie Methode mit Liste von Argumenten machen. Code:Methode Erstellung Dilemma

Builder.DefineMethod("aaa", MethodAttributes.Public | MethodAttributes.Static); 

Dies ist mein Code. Beste Überlastung ist für mich:

http://msdn.microsoft.com/en-us/library/cbwdt101.aspx

So, jetzt die Frage: Wie kann ich Methode ohne Rückgabeparameter machen, die Argumente bekommen? (ich brauche etwas, was dies tun können: Builder.DefineMethod("aaa", MethodAttributes.Public | MethodAttributes.Static, Type[] ArgumentTypes)

Antwort

4

Pass null für den Rückgabetyp:

Builder.DefineMethod("aaa", MethodAttributes.Public | MethodAttributes.Static, null, yourArgumentTypes); 

UPDATE

Decompiling die Typebuilder, es sieht aus wie die Überlastungen ohne Rückkehr Typ pass null zu den größeren Überladungen, so sieht es aus wie null ist die Art, wie die Überladungen ohne Rückgabetyp keine Rückgabetyp angeben.

+2

Nicht 'typeof (void)'? –

+0

@KirkWoll: Mit Blick auf den dekompilierten Code übergeben die kleineren Überladungen 'Null' an die größeren für Rückgabetyp. –

+2

Interessant. Ich habe immer 'typeof (void)' verwendet, aber das Experimentieren mit beiden ergab die gleichen Ergebnisse. Technisch ist 'typeof (void)' genauer in dem Sinne, dass, sobald Sie die Methode definiert haben, der von der 'ReturnType'-Eigenschaft zurückgegebene Wert' System.Void' (aka, 'typeof (void)') ist. (Aber da beide die gleiche Wirkung haben, ist dieser Unterschied offensichtlich akademisch) –