F#一种扩展方法引用另一种扩展方法 [] 静态成员ToOrganizationRequest OrganizationRequest>(实体:实体)= let request=Activator.CreateInstance(typeof())
第二个extensionmethod无法引用第一个,因此F#一种扩展方法引用另一种扩展方法 [] 静态成员ToOrganizationRequest OrganizationRequest>(实体:实体)= let request=Activator.CreateInstance(typeof()),f#,extension-methods,F#,Extension Methods,第二个extensionmethod无法引用第一个,因此 |>Seq.map(fun x->x.ToOrganizationRequest如果您不需要在C#中显示扩展方法,您可以(也可能应该)像这样扩展实体类型: [<Extension>] static member ToOrganizationRequest<'T when 'T :> OrganizationRequest> (entity: Entity) = let request = Activa
|>Seq.map(fun x->x.ToOrganizationRequest如果您不需要在C#中显示扩展方法,您可以(也可能应该)像这样扩展
实体
类型:
[<Extension>]
static member ToOrganizationRequest<'T when 'T :> OrganizationRequest> (entity: Entity) =
let request = Activator.CreateInstance(typeof<'T>) :?> OrganizationRequest
request.Parameters.Item "Target" <- entity
request
[<Extension>]
static member ToOrganizationRequest<'T when 'T :> OrganizationRequest> (entities: seq<Entity>) =
entities
|> Seq.map (fun x -> x.ToOrganizationRequest<'T>())
使用
成员this.ToOrganizationRequest OrganizationRequest>()=
let request=Activator.CreateInstance(typeof())
如果在C#中确实需要它们,则必须在定义扩展方法的类型中静态调用其他扩展方法
[<Extension>]
type Ext =
[<Extension>]
static member ToOrganizationRequest<'T when 'T :> OrganizationRequest> (entities: seq<Entity>) =
entities
|> Seq.map (fun x -> x.ToOrganizationRequest<'T>())
[]
类型Ext=
[]
静态成员ToOrganizationRequest OrganizationRequest>(实体:实体)=
让请求=Activator.CreateInstance(typeofstatic成员可以通过TypeName.StaticMember
,所以试着用它来代替this.StaticMember
你是什么意思?我应该可以做一些类似实体的事情。ToOrganizationRequest我从C#调用代码。工作得很好,非常感谢!实际上@TheInnerLight F#风格的扩展方法不会对于第二种方法来说,这是不允许的,因为这个应该是seq
;你需要用…
写键入seq,这是不允许的。@Tarmil谢谢,我认为这个故事的寓意是不要匆忙写答案:)
[<Extension>]
type Ext =
[<Extension>]
static member ToOrganizationRequest<'T when 'T :> OrganizationRequest> (entities: seq<Entity>) =
entities
|> Seq.map (fun x -> x.ToOrganizationRequest<'T>())
[<Extension>]
type Ext =
[<Extension>]
static member ToOrganizationRequest<'T when 'T :> OrganizationRequest> (entity: Entity) =
let request = Activator.CreateInstance(typeof<'T>) :?> OrganizationRequest
request.Parameters.Item "Target" <- entity
request
[<Extension>]
static member ToOrganizationRequest<'T when 'T :> OrganizationRequest> (entities: seq<Entity>) =
entities
|> Seq.map (Ext.ToOrganizationRequest)