@@ -10,35 +10,48 @@ namespace ExcelDna.Integration.ExtendedRegistration
1010{
1111 internal class Registration
1212 {
13- public static void RegisterExtended ( IEnumerable < ExcelDna . Registration . ExcelFunctionRegistration > functions , IEnumerable < ExcelParameterConversion > parameterConversions , IEnumerable < ExcelReturnConversion > returnConversions , IEnumerable < ExcelFunctionProcessor > excelFunctionProcessors , IEnumerable < FunctionExecutionHandlerSelector > excelFunctionExecutionHandlerSelectors )
13+ public class Configuration
14+ {
15+ public IEnumerable < ExcelParameterConversion > ParameterConversions { get ; set ; }
16+ public IEnumerable < ExcelReturnConversion > ReturnConversions { get ; set ; }
17+ public IEnumerable < ExcelFunctionProcessor > ExcelFunctionProcessors { get ; set ; }
18+ public IEnumerable < FunctionExecutionHandlerSelector > ExcelFunctionExecutionHandlerSelectors { get ; set ; }
19+ }
20+
21+ public static void Register ( IEnumerable < ExcelFunctionRegistration > functions , Configuration configuration )
22+ {
23+ Register ( Process ( functions , configuration ) ) ;
24+ }
25+
26+ public static void Register ( IEnumerable < ExcelFunctionRegistration > functions )
27+ {
28+ functions = functions . ToList ( ) ;
29+ var lambdas = functions . Select ( reg => reg . FunctionLambda ) . ToList ( ) ;
30+ var attribs = functions . Select ( reg => reg . FunctionAttribute ) . ToList < object > ( ) ;
31+ var argAttribs = functions . Select ( reg => reg . ParameterRegistrations . Select ( pr => pr . ArgumentAttribute ) . ToList < object > ( ) ) . ToList ( ) ;
32+ ExcelIntegration . RegisterLambdaExpressions ( lambdas , attribs , argAttribs ) ;
33+ }
34+
35+ public static IEnumerable < ExcelFunctionRegistration > Process ( IEnumerable < ExcelFunctionRegistration > functions , Configuration configuration )
1436 {
1537 // Set the Parameter Conversions before they are applied by the ProcessParameterConversions call below.
1638 // CONSIDER: We might change the registration to be an object...?
17- var conversionConfig = GetParameterConversionConfig ( parameterConversions , returnConversions ) ;
39+ var conversionConfig = GetParameterConversionConfig ( configuration . ParameterConversions , configuration . ReturnConversions ) ;
1840
19- var functionHandlerConfig = GetFunctionExecutionHandlerConfig ( excelFunctionExecutionHandlerSelectors ) ;
41+ var functionHandlerConfig = GetFunctionExecutionHandlerConfig ( configuration . ExcelFunctionExecutionHandlerSelectors ) ;
2042
21- Register ( functions
43+ return functions
2244 . UpdateRegistrationsForRangeParameters ( )
23- . ProcessFunctionProcessors ( excelFunctionProcessors , conversionConfig )
45+ . ProcessFunctionProcessors ( configuration . ExcelFunctionProcessors , conversionConfig )
2446 . ProcessParameterConversions ( conversionConfig )
2547 . ProcessAsyncRegistrations ( nativeAsyncIfAvailable : false )
2648 . ProcessParamsRegistrations ( )
2749 . ProcessObjectHandles ( )
2850 . ProcessFunctionExecutionHandlers ( functionHandlerConfig )
29- ) ;
30- }
31-
32- internal static void Register ( IEnumerable < ExcelDna . Registration . ExcelFunctionRegistration > functions )
33- {
34- functions = functions . ToList ( ) ;
35- var lambdas = functions . Select ( reg => reg . FunctionLambda ) . ToList ( ) ;
36- var attribs = functions . Select ( reg => reg . FunctionAttribute ) . ToList < object > ( ) ;
37- var argAttribs = functions . Select ( reg => reg . ParameterRegistrations . Select ( pr => pr . ArgumentAttribute ) . ToList < object > ( ) ) . ToList ( ) ;
38- ExcelIntegration . RegisterLambdaExpressions ( lambdas , attribs , argAttribs ) ;
51+ ;
3952 }
4053
41- static ParameterConversionConfiguration GetParameterConversionConfig ( IEnumerable < ExcelParameterConversion > parameterConversions , IEnumerable < ExcelReturnConversion > returnConversions )
54+ private static ParameterConversionConfiguration GetParameterConversionConfig ( IEnumerable < ExcelParameterConversion > parameterConversions , IEnumerable < ExcelReturnConversion > returnConversions )
4255 {
4356 // NOTE: The parameter conversion list is processed once per parameter.
4457 // Parameter conversions will apply from most inside, to most outside.
@@ -93,7 +106,7 @@ static ParameterConversionConfiguration GetParameterConversionConfig(IEnumerable
93106 return paramConversionConfig ;
94107 }
95108
96- static FunctionExecutionConfiguration GetFunctionExecutionHandlerConfig ( IEnumerable < FunctionExecutionHandlerSelector > excelFunctionExecutionHandlerSelectors )
109+ private static FunctionExecutionConfiguration GetFunctionExecutionHandlerConfig ( IEnumerable < FunctionExecutionHandlerSelector > excelFunctionExecutionHandlerSelectors )
97110 {
98111 FunctionExecutionConfiguration result = new FunctionExecutionConfiguration ( ) ;
99112
0 commit comments