1

我在我的 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 或其他名称?

4

1 回答 1

2

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

最重要的是:

  • 参数或结构字段封送定义:大小、类型、方向(in、out、ref)、属性、结构中的偏移量等。
  • orders:接口方法顺序、参数顺序、字段顺序等。
  • GUID(IID、CLSID 等)值
  • 自定义属性,如 ComVisible、Progid、MarshalAs、ComInterfaceType 等。

话虽如此,我个人总是尽可能地保持名称与原始名称最接近(有时您必须出于某种技术原因重命名)并像您一样添加 SuppressMessage。如果您查看 .NET Framework 本身(使用诸如 .NET Reflector 或 ILSpy 之类的工具),您通常会观察到相同的规则。

于 2013-05-30T05:40:31.640 回答