ca1050: قم بتعريف أنواع في مساحات الاسم
TypeName |
DeclareTypesInNamespaces |
CheckId |
ca1050 |
Category |
Microsoft.تصميم |
تعطيل تغيير |
فصل |
السبب
نوع عام أو المحمية هو المعرفة خارج نطاق مسمى مساحة الاسم.
وصف القاعدة
يتم تعريف الأنواع في مساحات الأسماء إلى منع عدد التضاربات اسم، و كطريقة لتنظيم أنواع ذات الصلة في التسلسل هرمي لكائن. تكون أنواع خارج أي مساحة الاسم المسماة في مساحة الاسم عمومي التي لا يمكن الرجوع إليها في تعليمات برمجية.
كيف إلى الإصلاح انتهاكات
لإصلاح انتهاكا لهذه قاعدة، قم بوضع نوع في مساحة الاسم.
عند إلى منع التحذيرات
أثناء ذلك هو مطلقا الضرورية لمنع ظهور تحذير من القيم بالموضع هو قاعدة، فإنه هو بأمان، قم بترتيب هو عند تجميع عدم استخدامه مع تجميعات الأخرى.
مثال
يظهر المثال التالي مكتبة نوع التصريح بشكل غير صحيح خارج مساحة الاسم ونوع بنفس اسم التي تم تعريفها في مساحة الاسم.
Imports System
' 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 GoodSpace
Public Class Test
Public Overrides Function ToString() As String
Return "Test lives in a namespace!"
End Function
End Class
End 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!";
}
}
}
يستخدم تطبيق التالي مكتبة المعرفة مسبقاً. ملاحظة أن تعريف النوع خارج مساحة الاسم إنشاء متى الاسم Testهو غير مؤهل بمساحة الاسم. لاحظ أيضا أنه الوصول إلى Testنوع في Goodspace، اسم مساحة الاسم هو المطلوبة.
Imports System
Namespace ApplicationTester
Public Class MainHolder
Public Shared Sub Main()
Dim t1 As New Test()
Console.WriteLine(t1.ToString())
Dim t2 As New GoodSpace.Test()
Console.WriteLine(t2.ToString())
End Sub
End Class
End Namespace
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());
}
}
}