Peringatan Pengompilasi (level 1) CS1911
Akses ke 'name' anggota melalui kata kunci 'base' dari metode anonim, ekspresi lambda, ekspresi kueri, atau iterator menghasilkan kode yang tidak dapat diverifikasi. Pertimbangkan untuk memindahkan akses ke metode pembantu pada jenis yang dimuat.
Memanggil fungsi virtual dengan kata kunci base
di dalam isi metode dari iterator atau metode anonim akan menghasilkan kode yang tidak dapat diverifikasi. Kode yang tidak dapat diverifikasi akan gagal dijalankan di lingkungan kepercayaan parsial.
Satu resolusi untuk CS1911 adalah memindahkan panggilan fungsi virtual ke fungsi pembantu.
Sampel berikut menghasilkan CS1911.
// CS1911.cs
// compile with: /W:1
using System;
delegate void D();
delegate D RetD();
class B {
protected virtual void M() {
Console.WriteLine("B.M");
}
}
class Der : B {
protected override void M() {
Console.WriteLine("D.M");
}
void Test() { base.M(); }
D Test2() { return new D(base.M); }
public D CallBaseM() {
return delegate () { base.M(); }; // CS1911
// try the following line instead
// return delegate () { Test(); };
}
public RetD DelToBaseM() {
return delegate () { return new D(base.M); }; // CS1911
// try the following line instead
// return delegate () { return Test2(); };
}
}
class Program {
public static void Main() {
Der der = new Der();
D d = der.CallBaseM();
d();
RetD rd = der.DelToBaseM();
rd()();
}
}
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: