我应该更改使用PInvoke / ComImport公开的方法或类名

时间:2013-05-30 04:53:51

标签: c# pinvoke code-analysis dllimport

我在c#代码中使用了一些本机函数。所以我有一些枚举,方法和类。我已经启用了Microsoft All规则进行代码分析。因此,当我建立时,我收到了有关姓名的警告。

例如;

[Guid("0000000d-0000-0000-C000-000000000046")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IEnumSTATSTG

Warning: "CA1709:IdentifiersShouldBeCasedCorrectly" for IEnumSTATSTG

我所做的是我已经压制了警告。但这是一个好习惯吗?我该怎么办?我可以将此界面 IEnumSTATSTG 重命名为其他不会发出警告的内容。

同样如果我有一个方法,其中包含用C / C ++风格编写的参数,那么它也给了我一个代码分析警告。

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Dest"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "grf"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1726:UsePreferredTerms", MessageId = "Flags"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "pwcs"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "pstg")]
uint MoveElementTo(
    /* [string][in] */ string pwcsName,
    /* [unique][in] */ IStorage pstgDest,
    /* [string][in] */ string pwcsNewName,
    /* [in] */ uint grfFlags);

这里我已经抑制了所有参数名称的警告。是否可以将 pwcsName 等参数重命名为Name或其他名称?

1 个答案:

答案 0 :(得分:2)

名称对于p / invoke或COM调用并不重要 - 通常,一切皆有可能: - )。

最重要的是:

  • 参数或结构域编组定义:大小,类型,方向(in,out,ref),属性,结构偏移等。
  • 订单:界面方法顺序,参数顺序,字段顺序等
  • GUID(IID,CLSID等)值
  • 自定义属性,如ComVisible,Progid,MarshalAs,ComInterfaceType等。

话虽这么说,我个人总是尽可能保持与原始名称最接近的名称(有时因为某些技术原因需要重命名)并像你一样添加SuppressMessage。如果您查看.NET Framework本身(使用.NET Reflector或ILSpy等工具),您将会遵循相同的规则。

相关问题