SYSLIB1230: Egy másik assembly-ben definiált GeneratedComInterface-attributummal rendelkező interfész származtatása nem támogatott

A .NET 9-ben és azután a GeneratedComInterfaceAttribute attribútummal rendelkező interfész meghatározása, amely egy másik összeállításban definiált, GeneratedComInterface attribútummal rendelkező interfész leszármazottja, a következő korlátozásokkal támogatott:

  • Az alapillesztőtípust a származtatott típussal megegyező keretrendszerre kell lefordítani.
  • Az alapillesztőtípus nem árnyékelheti az alapillesztő egyik tagját sem, ha van ilyenje.

Emellett a másik assembly-ben definiált alap-interfészláncban létrehozott virtuális metódusok módosításait a származtatott interfészek nem veszik figyelembe, amíg a projektet újra nem építik.

Amikor egy attribútummal ellátott felületet határoz meg, amely egy másik szerelvényben definiált GeneratedComInterface-attribútumú felületből származik, a SYSLIB1230 figyelmeztetés ad információt az ezzel járó korlátozásokról. A korlátozások nyugtázásához a következő kódban tiltsa le a figyelmeztetést:

// Disable the warning.
#pragma warning disable SYSLIB1230
[GeneratedComInterface]
interface IDerived : IBaseInOtherAssembly
// Re-enable the warning.
#pragma warning restore SYSLIB1230
{
    // the interface definition
}

Figyelmeztetések mellőzése

Javasoljuk, hogy ha lehetséges, használja az egyik kerülő megoldást. Ha azonban nem tudja módosítani a kódot, egy irányelv vagy egy #pragma projektbeállítás segítségével letilthatja a figyelmeztetést <NoWarn> . Ha a SYSLIB1XXX forrásgenerátor diagnosztika nem hibaként jelenik meg, letilthatja a figyelmeztetést a kódban vagy a projektfájlban.

A kódban szereplő figyelmeztetések mellőzése (szükség esetén cserélje le a diagnosztikai azonosítót):

// Disable the warning.
#pragma warning disable SYSLIB1006

// Code that generates compiler diagnostic.
// ...

// Re-enable the warning.
#pragma warning restore SYSLIB1006

A projektfájlban lévő figyelmeztetések mellőzése (szükség esetén cserélje le a diagnosztikai azonosítókat):

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   <TargetFramework>net10.0</TargetFramework>
   <!-- NoWarn below suppresses SYSLIB1002 project-wide -->
   <NoWarn>$(NoWarn);SYSLIB1002</NoWarn>
   <!-- To suppress multiple warnings, you can use multiple NoWarn elements -->
   <NoWarn>$(NoWarn);SYSLIB1002</NoWarn>
   <NoWarn>$(NoWarn);SYSLIB1006</NoWarn>
   <!-- Alternatively, you can suppress multiple warnings by using a semicolon-delimited list -->
   <NoWarn>$(NoWarn);SYSLIB1002;SYSLIB1006;SYSLIB1007</NoWarn>
  </PropertyGroup>
</Project>

Lásd még