gebeurtenis
17 mrt, 21 - 21 mrt, 10
Neem deel aan de meetup-serie om schaalbare AI-oplossingen te bouwen op basis van praktijkgebruiksvoorbeelden met collega-ontwikkelaars en experts.
Nu registrerenDeze browser wordt niet meer ondersteund.
Upgrade naar Microsoft Edge om te profiteren van de nieuwste functies, beveiligingsupdates en technische ondersteuning.
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA1050 |
Titel | Typen declareren in naamruimten |
Categorie | Ontwerpen |
Oplossing is brekend of niet-brekend | Breken |
Standaard ingeschakeld in .NET 9 | Als suggestie |
Een openbaar of beveiligd type wordt gedefinieerd buiten het bereik van een benoemde naamruimte.
Typen worden gedeclareerd in naamruimten om naamconflicten te voorkomen en als een manier om gerelateerde typen in een objecthiërarchie te organiseren. Typen die zich buiten een benoemde naamruimte bevinden, bevinden zich in een globale naamruimte waarnaar niet kan worden verwezen in code.
Als u een schending van deze regel wilt oplossen, plaatst u het type in een naamruimte.
Hoewel u nooit een waarschuwing van deze regel hoeft te onderdrukken, is het veilig om dit te doen wanneer de assembly nooit samen met andere assembly's wordt gebruikt.
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable CA1050
// The code that's violating the rule is on this line.
#pragma warning restore CA1050
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none
ervan in op het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA1050.severity = none
Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.
In het volgende voorbeeld ziet u een bibliotheek met een type dat onjuist is gedeclareerd buiten een naamruimte en een type met dezelfde naam die in een naamruimte is gedeclareerd.
// 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
De volgende toepassing maakt gebruik van de bibliotheek die eerder is gedefinieerd. Het type dat buiten een naamruimte wordt gedeclareerd, wordt gemaakt wanneer de naam Test
niet wordt gekwalificeerd door een naamruimte. Voor toegang tot het Test
type dat in een naamruimte is gedeclareerd, is de naamruimtenaam vereist.
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
.NET-feedback
.NET is een open source project. Selecteer een koppeling om feedback te geven:
gebeurtenis
17 mrt, 21 - 21 mrt, 10
Neem deel aan de meetup-serie om schaalbare AI-oplossingen te bouwen op basis van praktijkgebruiksvoorbeelden met collega-ontwikkelaars en experts.
Nu registreren