Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
TypeName |
DeclareTypesInNamespaces |
CheckId |
CA1050 |
Category |
Microsoft.Design |
Breaking Change |
Breaking |
Cause
A public or protected type is defined outside the scope of a named namespace.
Rule Description
Types are declared within namespaces to prevent name collisions, and as a way of organizing related types in an object hierarchy. Types outside any named namespace are in a global namespace that cannot be referenced in code.
How to Fix Violations
To fix a violation of this rule, place the type in a namespace.
When to Exclude Warnings
While it is never necessary to exclude a warning from this rule, it is safe to do this when the assembly will never be used with other assemblies.
Example
The following example shows a library with a type incorrectly declared outside a namespace, and a type with the same name declared in a namespace.
using System;
// Violates rule: DeclareTypesInNamespaces.
public class Test
{
public override string ToString()
{
return "Test does not live in a namespace!";
}
}
namespace GoodSpace
{
public class Test
{
public override string ToString()
{
return "Test lives in a namespace!";
}
}
}
The following application uses the library defined previously. Note that the type declared outside a namespace is created when the name Test is not qualified by a namespace. Note also that to access the Test type in Goodspace, the namespace name is required.
using System;
namespace ApplicationTester
{
public class MainHolder
{
public static void Main()
{
Test t1 = new Test();
Console.WriteLine(t1.ToString());
GoodSpace.Test t2 = new GoodSpace.Test();
Console.WriteLine(t2.ToString());
}
}
}
This example produces the following output.
Output
Test does not live in a namespace! Test lives in a namespace!