2014-03-19 2 views
4

정적 속성을 제공하는 유형 공급자가 있지만 문서는 반복되는 간격으로 변경 될 수 있습니다. 다음 속성 설정이 있습니다. F # 유형 공급자에서 AddXmlDocComputed 사용

let prop = ProvidedProperty("Test", typeof<string>, 
          IsStatic = true, 
          GetterCode = fun args -> <@@ "Test" @@>) 

는 그때 나는 인텔리 주석에 표시되지 텍스트를 얻을, 그러나

let GetDocumentation() = "Test documentation" 

do prop.AddXmlDocComputed(GetDocumentation) 

을 다음과 같이 AddXmlDocComputed와 함께 몇 가지 문서를 추가했습니다. 그런 다음 [<Note>]을 추가하여 인텔리 센스에 반영된 GetDocumentation 함수에서 예외를 발생 시켰고 GetDocumentation이라는 호출에서 시작되었다는 메시지가 발생했습니다. 나는 또한 AddXmlDocAddXmlDocDelayed을 사용해 보았는데, 둘 다 예상대로 문서를 추가했다.

그럼 내 질문에 누군가가 AddXmlDocComputed을 사용하는 경험이 있으며 내 현재 구현이 속성에 문서를 추가하지 않는 이유는 무엇입니까?

편집

: 그러나, 여전히 문서
내가 지금 VS2013 인스턴스를 디버깅 및 설명서가 호출되고 있으며 예상되는 문자열을 해당 속성에 대한 유형 공급자를 통해 전달되는 것을 볼 수 있습니다 해봤 없다 Intellisense 창에 나타납니다.

+0

나는'AddXmlDocComputed'를 전혀 사용하지 않았지만 걱정됩니다. 함수에서'AddXmlDocDelayed'와 어떻게 다른가요? – mavnn

+0

'AddXmlDocDelayed'를 사용할 때, 문서는'Invalidate'를 호출해도 캐시 된 것처럼 보입니다. 나는'AddXmlDocComputed'에 대한 호출이'Invalidate'가 호출되면 문서의 변경을 초래할 것이라는 인상을 받고있었습니다. – bruinbrown

+0

ProvidedTypes.fs에서 이것을 디버깅하려 했습니까? –

답변

0

나는 이것이 ProvidedTypes.fs의 버그라고 생각합니다. 설명은 GetCustomAttributesData()type CustomAttributesImpl() 일 때 계산 된 XML 문서 특성이 실제로 반환되지 않는다는 것입니다. 속성 배열의 일부로 속성을 반환하는 대신 실수로 속성의 내부 목록에 추가됩니다.

member __.GetCustomAttributesData() = 
    [| yield! customAttributesOnce.Force() 
     match xmlDocAlwaysRecomputed with None ->() | Some f -> yield mkXmlDocCustomAttributeData (f()) |] 
    :> IList<_> 

을 내가 수정과 GitHub의에 끌어 오기 요청을 발행 한 :

이 코드 구현을 대체, 로컬 문제를 해결합니다.

업데이트는 :

수정은 FSharp.TypeProviders.StarterPack의 마스터 분기에 병합되었다.