4

在 C# 中,您可能会看到如下内容:

[<DllImport("myUnmanagedDLL.dll")>]

或类似的行(但没有大于/小于符号):

[assembly: AssemblyTitle("MyProject")]

我知道第一个称为属性(它具有 gt 和 lt 符号),可用于向方法、类型等添加一种元数据,但第二个的语法是什么意思?我正在尝试用这种语法将某些东西翻译成 F#——即这一行:

[MonoMac.Foundation.Register("AppDelegate")]
4

3 回答 3

7

但是第二个的语法是什么意思?

这意味着该属性被应用于程序集,而不是类型(类或结构)或成员。

在 F# 中,您尝试翻译的行应该是:

[<MonoMac.Foundation.Register("AppDelegate")>]

然而,如果没有看到更多,就不可能知道应该在哪里应用它(类型、方法等)。type不过,考虑到这通常用于 C# 类,我怀疑这会继续您在 F# 中的定义。

附带说明,[<DllImport("myUnmanagedDLL.dll")>]不是有效的 C# - 那是 F# 语法。C#[Attribute]用于属性(和 VB.Net 使用<Attribute>)。

于 2012-08-06T17:01:38.730 回答
6

如果它有帮助——在 F# 中,程序集级属性通常应用于空do块:

[<assembly: AssemblyTitle("MyProject")>]
do ()
于 2012-08-06T19:42:04.047 回答
3

我认为您将 C# 与 VB.NET 语法混淆了

在 VB.NET<DllImport("myUnmanagedDLL.dll")>中,在 C# 中它[DllImport("myUnmanagedDLL.dll")]没有大于或小于符号。

第二个是程序集属性,它用于将属性应用于整个程序集,而不仅仅是特定的类、方法或属性

于 2012-08-06T17:03:58.650 回答