如何在具有 CLIEvent 属性的成员的 class 中禁用烦人的 Intellisense 注释?
How to disable the annoying Intellisense note in a class that has members with CLIEvent attributes?
与此类似post我有一个class,其中一些成员需要使用 CLIEvent 处理程序进行编译:
static let customEvent add remove =
{ new IDelegateEvent<_> with
member this.AddHandler del = add del
member this.RemoveHandler del = remove del }
let evKnock = customEvent (fun v -> t.AddHandler(knockEvent,v)) (fun v -> t.RemoveHandler(knockEvent,v))
let evPreviewKnock = customEvent (fun v -> t.AddHandler(previewKnockEvent,v)) (fun v -> t.RemoveHandler(previewKnockEvent,v))
[<CLIEvent>] member t.Knock = evKnock
[<CLIEvent>] member t.PreviewKnock = evPreviewKnock
现在在其他方法中,每当我键入 t.
时,我首先会在 Intellisense 中看到这种注释:
The event 'PreviewKnock' has a non-standard type. If this event is
declared in another CLI language, you may need to access this method
using explicit add_PreviewKnock and remove_PreviewKnock for the event.
If this event is declared in F#, make the type of the event an
instantiation of either 'IDelegateEvent< _ >' or 'IEvent< _ , _ >'
我能以某种方式关闭此警告吗?事件的类型为 IDelegateEvent。
我试图重现这个,但你的代码不完整,所以我不确定这是否与你得到的相同。但是,如果我稍微修改你的代码,我会得到和你一样的错误:
type A() =
let customEvent add remove =
{ new IDelegateEvent<_> with
member this.AddHandler del = add del
member this.RemoveHandler del = remove del }
let evKnock = customEvent ignore ignore
[<CLIEvent>] member t.Knock = evKnock
这似乎是因为 Knock
被推断为 IDelegateEvent<System.Delegate>
类型。
编译器希望您指定具体的委托类型 - 您可以定义自己的委托类型或使用 .NET 库中的标准委托类型。以下编译正常:
type A() =
let customEvent add remove =
// Explicitly specify delegate type as System.EventHandler (for example)
{ new IDelegateEvent<System.EventHandler> with
member this.AddHandler del = add del
member this.RemoveHandler del = remove del }
let evKnock = customEvent ignore ignore
[<CLIEvent>] member t.Knock = evKnock
与此类似post我有一个class,其中一些成员需要使用 CLIEvent 处理程序进行编译:
static let customEvent add remove =
{ new IDelegateEvent<_> with
member this.AddHandler del = add del
member this.RemoveHandler del = remove del }
let evKnock = customEvent (fun v -> t.AddHandler(knockEvent,v)) (fun v -> t.RemoveHandler(knockEvent,v))
let evPreviewKnock = customEvent (fun v -> t.AddHandler(previewKnockEvent,v)) (fun v -> t.RemoveHandler(previewKnockEvent,v))
[<CLIEvent>] member t.Knock = evKnock
[<CLIEvent>] member t.PreviewKnock = evPreviewKnock
现在在其他方法中,每当我键入 t.
时,我首先会在 Intellisense 中看到这种注释:
The event 'PreviewKnock' has a non-standard type. If this event is declared in another CLI language, you may need to access this method using explicit add_PreviewKnock and remove_PreviewKnock for the event. If this event is declared in F#, make the type of the event an instantiation of either 'IDelegateEvent< _ >' or 'IEvent< _ , _ >'
我能以某种方式关闭此警告吗?事件的类型为 IDelegateEvent。
我试图重现这个,但你的代码不完整,所以我不确定这是否与你得到的相同。但是,如果我稍微修改你的代码,我会得到和你一样的错误:
type A() =
let customEvent add remove =
{ new IDelegateEvent<_> with
member this.AddHandler del = add del
member this.RemoveHandler del = remove del }
let evKnock = customEvent ignore ignore
[<CLIEvent>] member t.Knock = evKnock
这似乎是因为 Knock
被推断为 IDelegateEvent<System.Delegate>
类型。
编译器希望您指定具体的委托类型 - 您可以定义自己的委托类型或使用 .NET 库中的标准委托类型。以下编译正常:
type A() =
let customEvent add remove =
// Explicitly specify delegate type as System.EventHandler (for example)
{ new IDelegateEvent<System.EventHandler> with
member this.AddHandler del = add del
member this.RemoveHandler del = remove del }
let evKnock = customEvent ignore ignore
[<CLIEvent>] member t.Knock = evKnock