CA1050: Típusok deklarálása névterekben
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA1050 |
Cím | Típusok deklarálása névterekben |
Kategória | Design |
A javítás kompatibilitástörő vagy nem törik | Törés |
Alapértelmezés szerint engedélyezve a .NET 8-ban | Javaslatként |
Ok
A névtér hatókörén kívül egy nyilvános vagy védett típus van definiálva.
Szabály leírása
A típusok névterekben vannak deklarálva a névütközések megakadályozása érdekében, valamint a kapcsolódó típusok objektumhierarchiában való rendszerezésére. Az elnevezett névtéren kívül eső típusok olyan globális névtérben találhatók, amelyekre a kód nem hivatkozhat.
Szabálysértések kijavítása
A szabály megsértésének kijavításához helyezze a típust egy névtérbe.
Mikor kell letiltani a figyelmeztetéseket?
Bár soha nem kell elfojtani a szabály figyelmeztetését, ezt nyugodtan megteheti, ha a szerelvény soha nem lesz más szerelvényekkel együtt használva.
Figyelmeztetés mellőzése
Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.
#pragma warning disable CA1050
// The code that's violating the rule is on this line.
#pragma warning restore CA1050
Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none
a konfigurációs fájlban.
[*.{cs,vb}]
dotnet_diagnostic.CA1050.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
1. példa
Az alábbi példa egy olyan kódtárat mutat be, amely egy névtéren kívül helytelenül deklarált típussal rendelkezik, valamint egy névtérben azonos nevű típust.
// Violates rule: DeclareTypesInNamespaces.
using System;
public class Test
{
public override string ToString()
{
return "Test does not live in a namespace!";
}
}
namespace ca1050
{
public class Test
{
public override string ToString()
{
return "Test lives in a namespace!";
}
}
}
' Violates rule: DeclareTypesInNamespaces.
Public Class Test
Public Overrides Function ToString() As String
Return "Test does not live in a namespace!"
End Function
End Class
Namespace ca1050
Public Class Test
Public Overrides Function ToString() As String
Return "Test lives in a namespace!"
End Function
End Class
End Namespace
2. példa
Az alábbi alkalmazás a korábban definiált kódtárat használja. A névtéren kívül deklarált típus akkor jön létre, ha a nevet Test
nem minősíti névtér. A névtérben deklarált típus eléréséhez Test
szükség van a névtér nevére.
public class MainHolder
{
public static void Main1050()
{
Test t1 = new Test();
Console.WriteLine(t1.ToString());
ca1050.Test t2 = new ca1050.Test();
Console.WriteLine(t2.ToString());
}
}
Public Class MainHolder
Public Shared Sub Main1050()
Dim t1 As New Test()
Console.WriteLine(t1.ToString())
Dim t2 As New ca1050.Test()
Console.WriteLine(t2.ToString())
End Sub
End Class
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: