aşağıdaki kodu bakınız oluşturulur. yöntemin Bang
oluşturulan CIL İçinde aldım:Derleyici anonim yöntemleri için yanlış kod [SABİT MS HATA]
call instance void ConsoleApp.Derived::'<>n__FabricatedMethod1'<string>()
ve derleyici oluşturulan yöntemin imzasını:
method private hidebysig
instance void '<>n__FabricatedMethod1'<T>() cil managed
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = (
01 00 00 00
)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void ConsoleApp.Base::Foo<!!T>()
IL_0006: ret
}
Ben doğru kod
'<>n__FabricatedMethod1'<class T>
olması gerektiğini düşünüyorum. Bu bir hata mı? Bu arada,
delegate{ }
kullanmadan (lambda ifadesi aynıdır), kod sözdizimi şekerleriyle düzgün çalışır. Ben Windows8 RTM VS2012 RTMRel kullanıyorum
Action good = new Action(base.Foo<string>());
good(); //fine
DÜZENLEME, .net framework 4.5
DÜZENLEME Bu hata düzeltildi.
Kodunuz benim için çalışıyor. Hangi C#/Net/Visual Studio sürümünü kullanıyorsunuz? Hangi platformu hedefliyorsunuz? – jeroenh
@jeroenh: C# 4.5 VS2012. –
VS2010, C# 4 ve 3.5 ile çalıştım. Şu an 2012'ye erişiminiz yok, ama kesinlikle bu gece deneyecek. – jeroenh