應該符合 COM 註冊方法
更新:2007 年 11 月
型別名稱 |
ComRegistrationMethodsShouldBeMatched |
CheckId |
CA1410 |
分類 |
Microsoft.Interoperability |
中斷變更 |
非中斷 |
原因
型別會宣告利用 System.Runtime.InteropServices.ComRegisterFunctionAttribute 屬性 (Attribute) 所標記的方法,但不會宣告利用 System.Runtime.InteropServices.ComUnregisterFunctionAttribute 屬性所標記的方法 (反之亦然)。
規則描述
若為要建立 .NET Framework 型別的 COM 用戶端,則必須先註冊型別。如果它可以使用,則會在註冊處理序 (Process) 期間呼叫利用 ComRegisterFunctionAttribute 屬性所標記的方法,以執行使用者指定的程式碼。在移除註冊處理序期間,呼叫利用 ComUnregisterFunctionAttribute 屬性所標記的對應方法,取消註冊方法的作業。
如何修正違規
若要修正這個規則的違規情形,請加入對應的註冊或移除註冊方法。
隱藏警告的時機
請勿隱藏此規則的警告。
範例
下列範例顯示違反規則的型別。註解的程式碼會顯示違規的修正。
Imports System
Imports System.Runtime.InteropServices
<Assembly: ComVisibleAttribute(True)>
Namespace InteroperabilityLibrary
Public Class ClassToRegister
End Class
Public Class ComRegistration
<ComRegisterFunctionAttribute> _
Friend Shared Sub RegisterFunction(typeToRegister As Type)
End Sub
' <ComUnregisterFunctionAttribute> _
' Friend Shared Sub UnregisterFunction(typeToRegister As Type)
' End Sub
End Class
End Namespace
using System;
using System.Runtime.InteropServices;
[assembly: ComVisible(true)]
namespace InteroperabilityLibrary
{
public class ClassToRegister
{
}
public class ComRegistration
{
[ComRegisterFunction]
internal static void RegisterFunction(Type typeToRegister) {}
// [ComUnregisterFunction]
// internal static void UnregisterFunction(Type typeToRegister) {}
}
}