Skip to content

Commit 5fe82c6

Browse files
authored
Merge pull request #744 from Excel-DNA/RegistrationMigration
Matched the public interface of ExcelDna.Registration package from ExcelDna.Integration package
2 parents eced4d3 + 6f48a80 commit 5fe82c6

File tree

76 files changed

+3931
-140
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+3931
-140
lines changed

Source/ExcelDna.Integration/AssemblyLoader.cs

+8-8
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ public static void ProcessAssemblies(
2929
List<MethodInfo> methods,
3030
List<ExtendedRegistration.ExcelParameterConversion> excelParameterConversions,
3131
List<ExtendedRegistration.ExcelFunctionProcessor> excelFunctionProcessors,
32-
List<ExtendedRegistration.ExcelFunction> excelFunctionsExtendedRegistration,
33-
List<FunctionExecutionHandlerSelector> excelFunctionExecutionHandlerSelectors,
32+
List<Registration.ExcelFunctionRegistration> excelFunctionsExtendedRegistration,
33+
List<Registration.FunctionExecutionHandlerSelector> excelFunctionExecutionHandlerSelectors,
3434
List<ExcelAddInInfo> addIns,
3535
List<Type> rtdServerTypes,
3636
List<ExcelComClassType> comClassTypes)
@@ -139,7 +139,7 @@ static void GetExcelFunctionProcessors(Type t, List<ExtendedRegistration.ExcelFu
139139
}
140140
}
141141

142-
static void GetExcelMethods(Type t, bool explicitExports, List<MethodInfo> excelMethods, List<ExtendedRegistration.ExcelFunction> excelFunctionsExtendedRegistration)
142+
static void GetExcelMethods(Type t, bool explicitExports, List<MethodInfo> excelMethods, List<Registration.ExcelFunctionRegistration> excelFunctionsExtendedRegistration)
143143
{
144144
// DOCUMENT: Exclude if not a class, not public, /*abstract,*/ an array,
145145
// open generic type or in "My" namespace.
@@ -163,7 +163,7 @@ static void GetExcelMethods(Type t, bool explicitExports, List<MethodInfo> excel
163163

164164
if (!isSupported && IsMethodMarkedForExport(mi))
165165
{
166-
excelFunctionsExtendedRegistration.Add(new ExtendedRegistration.ExcelFunction(mi));
166+
excelFunctionsExtendedRegistration.Add(new Registration.ExcelFunctionRegistration(mi));
167167
}
168168
else if (!isSupported)
169169
{
@@ -176,13 +176,13 @@ static void GetExcelMethods(Type t, bool explicitExports, List<MethodInfo> excel
176176
}
177177
}
178178

179-
static void GetExcelFunctionExecutionHandlerSelectors(Type type, List<FunctionExecutionHandlerSelector> excelFunctionExecutionHandlerSelectors)
179+
static void GetExcelFunctionExecutionHandlerSelectors(Type type, List<Registration.FunctionExecutionHandlerSelector> excelFunctionExecutionHandlerSelectors)
180180
{
181181
MethodInfo[] mis = type.GetMethods(BindingFlags.Public | BindingFlags.Static);
182182
foreach (MethodInfo mi in mis)
183183
{
184184
if (IsExcelFunctionExecutionHandlerSelector(mi))
185-
excelFunctionExecutionHandlerSelectors.Add((IExcelFunctionInfo functionInfo) => (IFunctionExecutionHandler)mi.Invoke(null, new object[] { functionInfo }));
185+
excelFunctionExecutionHandlerSelectors.Add((IExcelFunctionInfo functionInfo) => (Registration.IFunctionExecutionHandler)mi.Invoke(null, new object[] { functionInfo }));
186186
}
187187
}
188188

@@ -201,7 +201,7 @@ static bool IsMethodSupported(MethodInfo mi, bool explicitExports)
201201
{
202202
isSupported = false;
203203
}
204-
else if (ObjectHandles.ObjectHandleRegistration.IsMethodSupported(new ExtendedRegistration.ExcelFunction(mi)))
204+
else if (ObjectHandles.ObjectHandleRegistration.IsMethodSupported(new ExcelDna.Registration.ExcelFunctionRegistration(mi)))
205205
{
206206
isSupported = false;
207207
}
@@ -213,7 +213,7 @@ static bool IsMethodSupported(MethodInfo mi, bool explicitExports)
213213
{
214214
isSupported = false;
215215
}
216-
else if (ExtendedRegistration.ParamsRegistration.IsParamsMethod(new ExtendedRegistration.ExcelFunction(mi)))
216+
else if (ExcelDna.Registration.ParamsRegistration.IsParamsMethod(new ExcelDna.Registration.ExcelFunctionRegistration(mi)))
217217
{
218218
isSupported = false;
219219
}

Source/ExcelDna.Integration/DnaLibrary.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -259,9 +259,9 @@ internal List<ExportedAssembly> GetAssemblies(string pathResolveRoot)
259259
[XmlIgnore]
260260
List<ExtendedRegistration.ExcelParameterConversion> _excelParameterConversions = new List<ExtendedRegistration.ExcelParameterConversion>();
261261
[XmlIgnore]
262-
private List<ExtendedRegistration.ExcelFunction> _excelFunctionsExtendedRegistration = new List<ExtendedRegistration.ExcelFunction>();
262+
private List<Registration.ExcelFunctionRegistration> _excelFunctionsExtendedRegistration = new List<Registration.ExcelFunctionRegistration>();
263263
[XmlIgnore]
264-
private List<FunctionExecutionHandlerSelector> _excelFunctionExecutionHandlerSelectors = new List<FunctionExecutionHandlerSelector>();
264+
private List<Registration.FunctionExecutionHandlerSelector> _excelFunctionExecutionHandlerSelectors = new List<Registration.FunctionExecutionHandlerSelector>();
265265
[XmlIgnore]
266266
private List<ExtendedRegistration.ExcelFunctionProcessor> _excelFunctionProcessors = new List<ExtendedRegistration.ExcelFunctionProcessor>();
267267
[XmlIgnore]
@@ -326,7 +326,7 @@ internal void AutoOpen()
326326
if (_excelFunctionExecutionHandlerSelectors.Count == 0)
327327
ExcelIntegration.RegisterMethods(_methods);
328328
else
329-
ExtendedRegistration.Registration.RegisterStandard(_methods.Select(i => new ExtendedRegistration.ExcelFunction(i)), _excelFunctionExecutionHandlerSelectors);
329+
ExtendedRegistration.Registration.RegisterStandard(_methods.Select(i => new ExcelDna.Registration.ExcelFunctionRegistration(i)), _excelFunctionExecutionHandlerSelectors);
330330

331331
ExtendedRegistration.Registration.RegisterExtended(_excelFunctionsExtendedRegistration, _excelParameterConversions, _excelFunctionProcessors, _excelFunctionExecutionHandlerSelectors);
332332

Source/ExcelDna.Integration/ExcelAttributes.cs

-7
Original file line numberDiff line numberDiff line change
@@ -119,13 +119,6 @@ public ExcelCommandAttribute(string description)
119119
}
120120
}
121121

122-
// An extension of the ExcelFunction attribute to identify functions that should be registered as async
123-
[AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultiple = false)]
124-
[MeansImplicitUse]
125-
public class ExcelAsyncFunctionAttribute : ExcelFunctionAttribute
126-
{
127-
}
128-
129122
/// <summary>
130123
/// For user-defined parameter conversions.
131124
/// </summary>

Source/ExcelDna.Integration/ExcelDna.Integration.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
<ItemGroup Condition=" '$(TargetFramework)' == 'net462' ">
2020
<Reference Include="System.Windows.Forms" />
21+
<Reference Include="Microsoft.VisualBasic" />
2122
</ItemGroup>
2223

2324
<ItemGroup>

Source/ExcelDna.Integration/ExtendedRegistration/ExcelFunctionRegistrationConfiguration.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System;
1+
using ExcelDna.Registration;
2+
using System;
23
using System.Linq.Expressions;
34

45
namespace ExcelDna.Integration.ExtendedRegistration
@@ -12,7 +13,7 @@ public ExcelFunctionRegistrationConfiguration(ParameterConversionConfiguration c
1213
this.conversionConfig = conversionConfig;
1314
}
1415

15-
public LambdaExpression GetParameterConversion(Type initialParamType, IExcelFunctionParameter paramRegistration)
16+
public LambdaExpression GetParameterConversion(Type initialParamType, ExcelParameterRegistration paramRegistration)
1617
{
1718
return ParameterConversionRegistration.GetParameterConversion(conversionConfig, initialParamType, paramRegistration);
1819
}
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
using System.Collections.Generic;
1+
using ExcelDna.Registration;
2+
using System.Collections.Generic;
23
using System.Linq;
34

45
namespace ExcelDna.Integration.ExtendedRegistration
56
{
67
internal static class FunctionProcessorRegistration
78
{
8-
public static IEnumerable<ExcelFunction> ProcessFunctionProcessors(this IEnumerable<ExcelFunction> registrations, IEnumerable<ExcelFunctionProcessor> excelFunctionProcessors, ParameterConversionConfiguration conversionConfig)
9+
public static IEnumerable<ExcelDna.Registration.ExcelFunctionRegistration> ProcessFunctionProcessors(this IEnumerable<ExcelDna.Registration.ExcelFunctionRegistration> registrations, IEnumerable<ExcelFunctionProcessor> excelFunctionProcessors, ParameterConversionConfiguration conversionConfig)
910
{
1011
IEnumerable<IExcelFunctionInfo> result = registrations;
1112
ExcelFunctionRegistrationConfiguration config = new ExcelFunctionRegistrationConfiguration(conversionConfig);
@@ -14,7 +15,7 @@ public static IEnumerable<ExcelFunction> ProcessFunctionProcessors(this IEnumera
1415
result = p.Invoke(result, config);
1516
}
1617

17-
return result.Cast<ExcelFunction>();
18+
return result.Cast<ExcelDna.Registration.ExcelFunctionRegistration>();
1819
}
1920
}
2021
}

Source/ExcelDna.Integration/ExtendedRegistration/RangeConversion.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace ExcelDna.Integration.ExtendedRegistration
77
{
88
internal static class RangeConversion
99
{
10-
public static IEnumerable<ExcelFunction> UpdateRegistrationsForRangeParameters(this IEnumerable<ExcelFunction> registrations)
10+
public static IEnumerable<ExcelDna.Registration.ExcelFunctionRegistration> UpdateRegistrationsForRangeParameters(this IEnumerable<ExcelDna.Registration.ExcelFunctionRegistration> registrations)
1111
{
1212
return registrations.Select(UpdateAttributesForRangeParameters);
1313
}
@@ -20,7 +20,7 @@ public static IEnumerable<ExcelFunction> UpdateRegistrationsForRangeParameters(t
2020
return (object input) => ExcelConversionUtil.ReferenceToRange((ExcelReference)input);
2121
}
2222

23-
static ExcelFunction UpdateAttributesForRangeParameters(ExcelFunction reg)
23+
static ExcelDna.Registration.ExcelFunctionRegistration UpdateAttributesForRangeParameters(ExcelDna.Registration.ExcelFunctionRegistration reg)
2424
{
2525
var rangeParams = from parWithIndex in reg.FunctionLambda.Parameters.Select((par, i) => new { Parameter = par, Index = i })
2626
where IsRange(parWithIndex.Parameter.Type)

Source/ExcelDna.Integration/ExtendedRegistration/Registration.cs

+5-4
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@
44
using System.Linq.Expressions;
55
using System.Numerics;
66
using ExcelDna.Integration.ObjectHandles;
7+
using ExcelDna.Registration;
78

89
namespace ExcelDna.Integration.ExtendedRegistration
910
{
1011
internal class Registration
1112
{
12-
public static void RegisterExtended(IEnumerable<ExcelFunction> functions, IEnumerable<ExcelParameterConversion> parameterConversions, IEnumerable<ExcelFunctionProcessor> excelFunctionProcessors, IEnumerable<FunctionExecutionHandlerSelector> excelFunctionExecutionHandlerSelectors)
13+
public static void RegisterExtended(IEnumerable<ExcelDna.Registration.ExcelFunctionRegistration> functions, IEnumerable<ExcelParameterConversion> parameterConversions, IEnumerable<ExcelFunctionProcessor> excelFunctionProcessors, IEnumerable<FunctionExecutionHandlerSelector> excelFunctionExecutionHandlerSelectors)
1314
{
1415
// Set the Parameter Conversions before they are applied by the ProcessParameterConversions call below.
1516
// CONSIDER: We might change the registration to be an object...?
@@ -28,7 +29,7 @@ public static void RegisterExtended(IEnumerable<ExcelFunction> functions, IEnume
2829
);
2930
}
3031

31-
public static void RegisterStandard(IEnumerable<ExcelFunction> functions, IEnumerable<FunctionExecutionHandlerSelector> excelFunctionExecutionHandlerSelectors)
32+
public static void RegisterStandard(IEnumerable<ExcelDna.Registration.ExcelFunctionRegistration> functions, IEnumerable<FunctionExecutionHandlerSelector> excelFunctionExecutionHandlerSelectors)
3233
{
3334
var functionHandlerConfig = GetFunctionExecutionHandlerConfig(excelFunctionExecutionHandlerSelectors);
3435

@@ -37,7 +38,7 @@ public static void RegisterStandard(IEnumerable<ExcelFunction> functions, IEnume
3738
);
3839
}
3940

40-
static void Register(IEnumerable<ExcelFunction> functions)
41+
internal static void Register(IEnumerable<ExcelDna.Registration.ExcelFunctionRegistration> functions)
4142
{
4243
var lambdas = functions.Select(reg => reg.FunctionLambda).ToList();
4344
var attribs = functions.Select(reg => reg.FunctionAttribute).ToList<object>();
@@ -105,7 +106,7 @@ static FunctionExecutionConfiguration GetFunctionExecutionHandlerConfig(IEnumera
105106

106107
foreach (var s in excelFunctionExecutionHandlerSelectors)
107108
{
108-
result = result.AddFunctionExecutionHandler((ExcelFunction functionRegistration) => s(functionRegistration));
109+
result = result.AddFunctionExecutionHandler((ExcelDna.Registration.ExcelFunctionRegistration functionRegistration) => s(functionRegistration));
109110
}
110111

111112
return result;

Source/ExcelDna.Integration/IExcelFunctionInfo.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
using System.Collections.Generic;
1+
using ExcelDna.Registration;
2+
using System.Collections.Generic;
23
using System.Linq.Expressions;
34

45
namespace ExcelDna.Integration
56
{
67
public interface IExcelFunctionInfo
78
{
89
ExcelFunctionAttribute FunctionAttribute { get; }
9-
List<IExcelFunctionParameter> Parameters { get; }
10+
List<ExcelParameterRegistration> Parameters { get; }
1011
IExcelFunctionReturn Return { get; }
1112
List<object> CustomAttributes { get; }
1213

Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
using System;
1+
using ExcelDna.Registration;
2+
using System;
23
using System.Linq.Expressions;
34

45
namespace ExcelDna.Integration
56
{
67
public interface IExcelFunctionRegistrationConfiguration
78
{
8-
LambdaExpression GetParameterConversion(Type initialParamType, IExcelFunctionParameter paramRegistration);
9+
LambdaExpression GetParameterConversion(Type initialParamType, ExcelParameterRegistration paramRegistration);
910
LambdaExpression GetReturnConversion(Type initialReturnType, IExcelFunctionReturn returnRegistration);
1011
}
1112
}

Source/ExcelDna.Integration/ObjectHandles/ObjectHandleRegistration.cs

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using ExcelDna.Integration.ExtendedRegistration;
2+
using ExcelDna.Registration;
23
using System;
34
using System.Collections.Concurrent;
45
using System.Collections.Generic;
@@ -10,7 +11,7 @@ namespace ExcelDna.Integration.ObjectHandles
1011
{
1112
internal static class ObjectHandleRegistration
1213
{
13-
public static IEnumerable<ExcelFunction> ProcessObjectHandles(this IEnumerable<ExcelFunction> registrations)
14+
public static IEnumerable<ExcelDna.Registration.ExcelFunctionRegistration> ProcessObjectHandles(this IEnumerable<ExcelDna.Registration.ExcelFunctionRegistration> registrations)
1415
{
1516
registrations = registrations.ProcessParameterConversions(GetParameterConversionConfiguration());
1617

@@ -22,7 +23,7 @@ public static IEnumerable<ExcelFunction> ProcessObjectHandles(this IEnumerable<E
2223

2324
EntryFunctionExecutionHandler entryFunctionExecutionHandler = new EntryFunctionExecutionHandler();
2425

25-
reg.FunctionLambda = FunctionExecutionRegistration.ApplyMethodHandler(reg.FunctionAttribute.Name, reg.FunctionLambda, entryFunctionExecutionHandler);
26+
reg.FunctionLambda = Registration.FunctionExecutionRegistration.ApplyMethodHandler(reg.FunctionAttribute.Name, reg.FunctionLambda, entryFunctionExecutionHandler);
2627

2728
var returnConversion = CreateReturnConversion((object value) => GetReturnConversion(value, reg.FunctionAttribute.Name, entryFunctionExecutionHandler));
2829

@@ -38,7 +39,7 @@ public static ParameterConversionConfiguration GetParameterConversionConfigurati
3839
return new ParameterConversionConfiguration().AddParameterConversion(GetParameterConversion());
3940
}
4041

41-
public static bool IsMethodSupported(ExcelFunction reg)
42+
public static bool IsMethodSupported(ExcelDna.Registration.ExcelFunctionRegistration reg)
4243
{
4344
if (HasExcelHandle(reg.Return.CustomAttributes))
4445
return true;
@@ -121,7 +122,7 @@ static object GetObject(string handle)
121122
return "!!! INVALID HANDLE";
122123
}
123124

124-
private class EntryFunctionExecutionHandler : FunctionExecutionHandler
125+
private class EntryFunctionExecutionHandler : ExcelDna.Registration.FunctionExecutionHandler
125126
{
126127
private ConcurrentDictionary<int, object> arguments = new ConcurrentDictionary<int, object>();
127128

@@ -135,7 +136,7 @@ public object GetArguments(int managedThreadId)
135136
return null;
136137
}
137138

138-
public override void OnEntry(FunctionExecutionArgs args)
139+
public override void OnEntry(ExcelDna.Registration.FunctionExecutionArgs args)
139140
{
140141
this.arguments.AddOrUpdate(Thread.CurrentThread.ManagedThreadId, args.Arguments, (key, oldValue) => args.Arguments);
141142
}

0 commit comments

Comments
 (0)