2012-03-03 4 views

답변

13

불행하게도, 당신은 유형 공급자에 대한 정적 매개 변수로 유형을 전달할 수 없습니다. MyProvider< "first argument", 42 >을 사용하여 전달 된 정적 매개 변수는 기본 유형 (예 : string, int 및 이와 유사)이어야합니다. 설명서 어디에서나 목록을 볼 수는 없지만 Type은 확실히 지원되지 않습니다.

이 문제는 typeof<MyType>을 전달할 수 있습니다. 여기서 MyType은 형식 공급자를 사용하는 파일과 동일한 파일에서 선언되므로 F # 컴파일러는 먼저 파일의 첫 번째 부분을 컴파일해야하며, 그런 다음 공급자를 호출 한 다음 계속하십시오. 이것은 가능하지만 F # 팀에게는 우선 순위가 낮습니다.

유형 공급자 유형에 대한 정보를 전달하는 가장 좋은 방법은 그것을 유형 이름을 지정하고 (유형은 이미 컴파일 된 어셈블리에서 인 경우에만 동작합니다) 반사를 사용하여 유형을 조회하는 것입니다

type MyTest = MyTypeProvider<"System.Int32"> 
+0

의미가 있습니다. 그래서 내 생각에는 실행 수준이라는 개념이 필요합니다. 계산식과 비슷하게, 주 환경에 유형을 제공 할 수 있으며 외부 DLL에 ressorting하지 않고 다른 상위 실행 수준보다 먼저 코드를 실행합니다. – nicolas

관련 문제