Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F#一种扩展方法引用另一种扩展方法 [] 静态成员ToOrganizationRequest OrganizationRequest>(实体:实体)= let request=Activator.CreateInstance(typeof())_F#_Extension Methods - Fatal编程技术网

F#一种扩展方法引用另一种扩展方法 [] 静态成员ToOrganizationRequest OrganizationRequest>(实体:实体)= let request=Activator.CreateInstance(typeof())

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

第二个extensionmethod无法引用第一个,因此


|>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)