Compilerwarnung (Stufe 1) CS1911
Aktualisiert: November 2007
Fehlermeldung
Der Zugriff auf Member "Name" über das Schlüsselwort "base" von einer anonymen Methode, einem lambda-Ausdruck, einem Abfrageausdruck oder einem Iterator führt zu nicht überprüfbarem Code. Verschieben Sie den Zugriff auf eine Hilfsmethode im enthaltenden Typ.
Access to member 'name' through a 'base' keyword from an anonymous method, lambda expression, query expression, or iterator results in unverifiable code. Consider moving the access into a helper method on the containing type.
Das Aufrufen virtueller Funktionen mit dem base-Schlüsselwort im Methodentext eines Iterators oder anonymer Methoden führt zu nicht überprüfbarem Code. Beim Ausführen von nicht überprüfbarem Code in einer partiell vertrauenswürdigen Umgebung tritt ein Fehler auf.
Eine Möglichkeit zum Beheben von CS1911 besteht darin, den virtuellen Funktionsaufruf in eine Hilfsfunktion zu verschieben.
Beispiel
Im folgenden Beispiel wird CS1911 generiert:
// 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()();
}
}