@@ -28,6 +28,7 @@ public static void ProcessAssemblies(
2828 List < ExportedAssembly > assemblies ,
2929 List < MethodInfo > methods ,
3030 List < ExtendedRegistration . ExcelParameterConversion > excelParameterConversions ,
31+ List < ExtendedRegistration . ExcelReturnConversion > excelReturnConversions ,
3132 List < ExtendedRegistration . ExcelFunctionProcessor > excelFunctionProcessors ,
3233 List < Registration . ExcelFunctionRegistration > excelFunctionsExtendedRegistration ,
3334 List < Registration . FunctionExecutionHandlerSelector > excelFunctionExecutionHandlerSelectors ,
@@ -41,6 +42,7 @@ public static void ProcessAssemblies(
4142 {
4243 int initialObjectsCount = methods . Count +
4344 excelParameterConversions . Count +
45+ excelReturnConversions . Count +
4446 excelFunctionProcessors . Count +
4547 excelFunctionsExtendedRegistration . Count +
4648 excelFunctionExecutionHandlerSelectors . Count +
@@ -85,6 +87,7 @@ public static void ProcessAssemblies(
8587 if ( ! explicitRegistration )
8688 {
8789 GetExcelParameterConversions ( type , excelParameterConversions ) ;
90+ GetExcelReturnConversions ( type , excelReturnConversions ) ;
8891 GetExcelFunctionProcessors ( type , excelFunctionProcessors ) ;
8992 GetExcelMethods ( type , explicitExports , methods , excelFunctionsExtendedRegistration ) ;
9093 GetExcelFunctionExecutionHandlerSelectors ( type , excelFunctionExecutionHandlerSelectors ) ;
@@ -101,6 +104,7 @@ public static void ProcessAssemblies(
101104
102105 if ( methods . Count +
103106 excelParameterConversions . Count +
107+ excelReturnConversions . Count +
104108 excelFunctionProcessors . Count +
105109 excelFunctionsExtendedRegistration . Count +
106110 excelFunctionExecutionHandlerSelectors . Count +
@@ -127,6 +131,18 @@ static void GetExcelParameterConversions(Type t, List<ExtendedRegistration.Excel
127131 }
128132 }
129133
134+ static void GetExcelReturnConversions ( Type t , List < ExtendedRegistration . ExcelReturnConversion > excelReturnConversions )
135+ {
136+ MethodInfo [ ] mis = t . GetMethods ( BindingFlags . Public | BindingFlags . Static ) ;
137+ foreach ( MethodInfo mi in mis )
138+ {
139+ if ( IsReturnConversion ( mi ) )
140+ {
141+ excelReturnConversions . Add ( new ExtendedRegistration . ExcelReturnConversion ( mi ) ) ;
142+ }
143+ }
144+ }
145+
130146 static void GetExcelFunctionProcessors ( Type t , List < ExtendedRegistration . ExcelFunctionProcessor > excelFunctionProcessors )
131147 {
132148 MethodInfo [ ] mis = t . GetMethods ( BindingFlags . Public | BindingFlags . Static ) ;
@@ -434,6 +450,11 @@ private static bool IsParameterConversion(MethodInfo methodInfo)
434450 return HasCustomAttribute ( methodInfo , "ExcelDna.Integration.ExcelParameterConversionAttribute" ) ;
435451 }
436452
453+ private static bool IsReturnConversion ( MethodInfo methodInfo )
454+ {
455+ return HasCustomAttribute ( methodInfo , "ExcelDna.Integration.ExcelReturnConversionAttribute" ) ;
456+ }
457+
437458 private static bool IsFunctionProcessor ( MethodInfo methodInfo )
438459 {
439460 return HasCustomAttribute ( methodInfo , "ExcelDna.Integration.ExcelFunctionProcessorAttribute" ) ;
0 commit comments