使用泛型从C#dll调用函数时出现错误-2147467261
试图使用一些依赖于对Excel的VBA中的泛型方法进行调用的C#代码会给我带来错误“-2147467261”。如果我对使用泛型方法的代码行进行注释,它不会给出错误,但显然代码不起作用 这是我的C#代码界面: 还有我的中间类,用于调用其余的代码使用泛型从C#dll调用函数时出现错误-2147467261,c#,excel,vba,C#,Excel,Vba,试图使用一些依赖于对Excel的VBA中的泛型方法进行调用的C#代码会给我带来错误“-2147467261”。如果我对使用泛型方法的代码行进行注释,它不会给出错误,但显然代码不起作用 这是我的C#代码界面: 还有我的中间类,用于调用其余的代码 [ClassInterface(ClassInterfaceType.None)] [Guid("F8827AA5-2983-4885-AEB8-F873562A146F")] [ProgId("GeneticAlgorithmTSP.Interop")]
[ClassInterface(ClassInterfaceType.None)]
[Guid("F8827AA5-2983-4885-AEB8-F873562A146F")]
[ProgId("GeneticAlgorithmTSP.Interop")]
public class Interop : _Interop
{
(...)
public void SetPopulation(int n)
{
SimpleSubjects.Randomize(n);
}
(...)
}
randomize函数对数组调用此扩展泛型方法以将其洗牌
public static void Shuffle<T>(this IList<T> list)
{
int n = list.Count;
while (n > 1)
{
n--;
int k = rng.Next(n + 1);
T value = list[k];
list[k] = list[n];
list[n] = value;
}
}
publicstaticvoidshuffle(此IList列表)
{
int n=list.Count;
而(n>1)
{
n--;
int k=下一个(n+1);
T值=列表[k];
列表[k]=列表[n];
列表[n]=值;
}
}
除此之外,在代码的后面部分,使用了Array.Sort和LINQ的扩展方法,这些方法也会抛出相同的错误
如何使用Excel的VBA中的这些方法
编辑:
公共静态类SimpleSubjects
{
公共静态int[]Tours{get;private set;}
公共静态无效随机化(int amount)
{
int cities=SimpleCities.cities.Length;
Tours=新整数[amount][];
对于(int i=0;i
是否缺少Cast
功能,例如list.OfType()或.Cast()
随机化功能在哪里?你想向COM公开泛型类型吗?代码在C#上运行时没有问题,从VBA调用时失败,让我用Randomizi扩展我的帖子我怀疑这是同一个问题:嘿,顺便说一句,interfaceIDispatch
只允许后期绑定
,但在VBA中,你似乎提前绑定了COM类。。。怎么回事
public static void Shuffle<T>(this IList<T> list)
{
int n = list.Count;
while (n > 1)
{
n--;
int k = rng.Next(n + 1);
T value = list[k];
list[k] = list[n];
list[n] = value;
}
}
public static class SimpleSubjects
{
public static int[][] Tours { get; private set; }
public static void Randomize(int ammount)
{
int cities = SimpleCities.Cities.Length;
Tours = new int[ammount][];
for (int i = 0; i < ammount; i++) {
var Order = new int[cities];
for (int j = 0; j < cities; j++)
{
Order[j] = j;
}
Order.Shuffle();
Tours[i] = Order;
}
}
(...)
}