IL3003: A "RequiresAssemblyFilesAttribute" megjegyzésnek meg kell egyeznie az összes felületi implementációban vagy felülbírálásban
Érték | |
---|---|
Szabályazonosító | IL3003 |
Kategória | SingleFile |
A javítás kompatibilitástörő vagy nem törhető | Nem törhető |
Ha egyetlen fájlként tesz közzé egy alkalmazást (például ha a tulajdonságot true
egy projektben állítja bePublishSingleFile
), a felületi implementációk vagy az olyan tagokkal rendelkező származtatott osztályok, amelyek nem rendelkeznek megfelelő széljegyzetekkel[RequiresAssemblyFiles]
, egy tagot hívhatnak meg az attribútummal, ami nem egy fájlkompatibilis. A figyelmeztetés négy lehetséges forgatókönyvben hozható létre:
Az alaposztály egy tagja rendelkezik az attribútummal, de a származtatott osztály felülíró tagja nem rendelkezik az attribútummal:
public class Base { [RequiresAssemblyFiles] public virtual void TestMethod() {} } public class Derived : Base { // IL3003: Base member 'Base.TestMethod' with 'RequiresAssemblyFilesAttribute' has a derived member 'Derived.TestMethod()' without 'RequiresAssemblyFilesAttribute'. For all interfaces and overrides the implementation attribute must match the definition attribute. public override void TestMethod() {} }
Az alaposztály egyik tagja nem rendelkezik az attribútummal, de a származtatott osztály felülíró tagja rendelkezik az attribútummal:
public class Base { public virtual void TestMethod() {} } public class Derived : Base { // IL3003: Member 'Derived.TestMethod()' with 'RequiresAssemblyFilesAttribute' overrides base member 'Base.TestMethod()' without 'RequiresAssemblyFilesAttribute'. For all interfaces and overrides the implementation attribute must match the definition attribute. [RequiresAssemblyFiles] public override void TestMethod() {} }
Az illesztő tag rendelkezik az attribútummal, de az implementációja nem rendelkezik az attribútummal:
interface IRAF { [RequiresAssemblyFiles] void TestMethod(); } class Implementation : IRAF { // IL3003: Interface member 'IRAF.TestMethod()' with 'RequiresAssemblyFilesAttribute' has an implementation member 'Implementation.TestMethod()' without 'RequiresAssemblyFilesAttribute'. For all interfaces and overrides the implementation attribute must match the definition attribute. public void TestMethod () { } }
Az illesztőtagok nem rendelkeznek az attribútummal, de az implementációja rendelkezik az attribútummal:
interface INoRAF { void TestMethod(); } class Implementation : INoRAF { [RequiresAssemblyFiles] // IL3003: Member 'Implementation.TestMethod()' with 'RequiresAssemblyFilesAttribute' implements interface member 'INoRAF.TestMethod()' without 'RequiresAssemblyFilesAttribute'. For all interfaces and overrides the implementation attribute must match the definition attribute. public void TestMethod () { } }
Az összes interfész és felülbírálás esetében a megvalósításnak meg kell egyeznie a definícióval a "RequiresAssemblyFilesAttribute" attribútum jelenléte vagy hiánya szempontjából. Vagy mindkét tag tartalmazza az attribútumot, vagy egyik sem. Távolítsa el vagy adja hozzá az attribútumot az interfész-/alaposztály-taghoz, vagy implementálja/származtatja az osztálytagot úgy, hogy az attribútum mindkettőn vagy egyiken sem legyen.
Ne tiltsa le ezt a figyelmeztetést.
.NET-visszajelzés
A(z) .NET egy nyílt forráskód projekt. Visszajelzés adásához válasszon egy hivatkozást: