@@ -5,8 +5,6 @@ open System.Collections.Generic
55open System.Data
66open System.Data .Common
77open System
8- open System.IO
9- open System.Configuration
108open System.Runtime .Caching
119
1210open Microsoft.FSharp .Core .CompilerServices
@@ -208,39 +206,27 @@ type SqlEnumProvider(config : TypeProviderConfig) as this =
208206 )
209207 providedEnumType.AddMember typeInit
210208
211- do //TryParse
212- let tryParse2Arg =
213- ProvidedMethod(
214- methodName = " TryParse" ,
215- parameters = [
216- ProvidedParameter( " value" , typeof< string>)
217- ProvidedParameter( " ignoreCase" , typeof< bool>) // optional=false
218- ],
219- returnType = typedefof<_ option>. MakeGenericType( valueType),
220- isStatic = true ,
221- invokeCode = fun _ ->
222- this.GetType()
223- .GetMethod( " GetTryParseImpl" , BindingFlags.NonPublic ||| BindingFlags.Static)
224- .MakeGenericMethod( valueType)
225- .Invoke( null , [| itemsExpr |])
226- |> unbox
227- )
228-
229- providedEnumType.AddMember tryParse2Arg
209+ let tryParseImpl =
210+ this.GetType()
211+ .GetMethod( " GetTryParseImpl" , BindingFlags.NonPublic ||| BindingFlags.Static)
212+ .MakeGenericMethod( valueType)
213+ .Invoke( null , [| itemsExpr |])
214+ |> unbox
230215
231- let tryParse1Arg =
216+ do //TryParse
217+ let tryParse =
232218 ProvidedMethod(
233219 methodName = " TryParse" ,
234220 parameters = [
235221 ProvidedParameter( " value" , typeof< string>)
222+ ProvidedParameter( " ignoreCase" , typeof< bool>, optionalValue = false ) // optional=false
236223 ],
237224 returnType = typedefof<_ option>. MakeGenericType( valueType),
238225 isStatic = true ,
239- invokeCode = fun args -> Expr.Call( tryParse2Arg, [ args.[ 0 ]; Expr.Value false ])
240-
226+ invokeCode = tryParseImpl
241227 )
242228
243- providedEnumType.AddMember tryParse1Arg
229+ providedEnumType.AddMember tryParse
244230
245231 do //Parse
246232 let parseImpl =
@@ -250,45 +236,34 @@ type SqlEnumProvider(config : TypeProviderConfig) as this =
250236 .Invoke( null , [| itemsExpr; providedEnumType.FullName |])
251237 |> unbox
252238
253- let parse2Arg =
239+ let parse =
254240 ProvidedMethod(
255241 methodName = " Parse" ,
256242 parameters = [
257243 ProvidedParameter( " value" , typeof< string>)
258- ProvidedParameter( " ignoreCase" , typeof< bool>)
244+ ProvidedParameter( " ignoreCase" , typeof< bool>, optionalValue = false )
259245 ],
260246 returnType = valueType,
261247 isStatic = true ,
262248 invokeCode = parseImpl
263249 )
264250
265- providedEnumType.AddMember parse2Arg
266-
267- let parse1Arg =
268- ProvidedMethod(
269- methodName = " Parse" ,
270- parameters = [
271- ProvidedParameter( " value" , typeof< string>)
272- ],
273- returnType = valueType,
274- isStatic = true ,
275- invokeCode = fun args -> Expr.Call( parse2Arg, [ args.[ 0 ]; Expr.Value false ])
276- )
277-
278- providedEnumType.AddMember parse1Arg
251+ providedEnumType.AddMember parse
279252
280253 do //TryFindName
254+ let findNameImpl =
255+ this.GetType()
256+ .GetMethod( " GetTryFindName" , BindingFlags.NonPublic ||| BindingFlags.Static)
257+ .MakeGenericMethod( valueType)
258+ .Invoke( null , [| itemsExpr |])
259+ |> unbox
260+
281261 let tryGetName =
282262 ProvidedMethod( methodName = " TryFindName" ,
283263 parameters = [ ProvidedParameter( " value" , valueType) ],
284264 returnType = typeof< string option>,
285265 isStatic = true ,
286- invokeCode = fun _ ->
287- this.GetType()
288- .GetMethod( " GetTryFindName" , BindingFlags.NonPublic ||| BindingFlags.Static)
289- .MakeGenericMethod( valueType)
290- .Invoke( null , [| itemsExpr |])
291- |> unbox
266+ invokeCode = findNameImpl
292267 )
293268
294269 providedEnumType.AddMember tryGetName
0 commit comments