Olvasás angol nyelven

Megosztás a következőn keresztül:


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ő

Ok

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 () { }
    }
    

Szabálysértések kijavítása

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.

Mikor kell letiltani a figyelmeztetéseket?

Ne tiltsa le ezt a figyelmeztetést.