小编Sim*_*wen的帖子

RegFree COM来自C#,不在VBA工作

我正在尝试使用Excel作为客户端,以及作为服务器的.NET dll,使用免注册COM.目前我只是试图让概念验证工作,但我遇到了麻烦.

显然,当我使用Excel时,我不能简单地使用与可执行文件一起生成的客户端清单,所以我正在使用Microsoft.Windows.ActCtx(链接)

我将客户端清单,程序集清单和dll都放在同一位置.

不幸的是,在C#中工作的东西似乎不适用于Excel/VBA,我很难理解.虽然C#测试客户端工作正常,但VBA发出80070002错误,对象'IActCtx'的消息方法'CreateObject'失败.

我有一个.NET DLL(COMTestService.dll)暴露COM(COMTestObject/ ICOMTestObject)的单个类/接口,如下所示:

[ComVisible(true), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
[Guid("EEE50CDF-D8EC-4F38-B986-C231EC45171E")]
public interface ICOMTestObject
{
    [ComVisible(true)]
    string GetString(int number);
}

[ComVisible(true), ClassInterfaceAttribute(ClassInterfaceType.None), ComDefaultInterface(typeof(ICOMTestObject))]
[Guid("6E54611B-8B56-49E0-9415-E59B0774A4BE")]
public class COMTestObject : ICOMTestObject
{
    public COMTestObject()
    {
    }

    public string GetString(int number)
    {
        return string.Format("The number is: {0}", number);
    }
}
Run Code Online (Sandbox Code Playgroud)

客户端清单(COMTestService_Client.manifest):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly 
    manifestVersion="1.0" 
    xmlns="urn:schemas-microsoft-com:asm.v1" >
    <assemblyIdentity
        name="client"
        version="1.0.0.0" />
    <dependency>
        <dependentAssembly>
            <assemblyIdentity
                name="COMTestService"
                version="1.0.0.0" 
                processorArchitecture="msil" /> …
Run Code Online (Sandbox Code Playgroud)

.net com vba side-by-side regfreecom

10
推荐指数
1
解决办法
2153
查看次数

在c#中调用泛型方法时的简写

如果我有这个方法

void foo<T>(T bar){}
Run Code Online (Sandbox Code Playgroud)

我可以这样成功地调用它:

string s = string.Empty;
foo(s);
Run Code Online (Sandbox Code Playgroud)

我想象编译器/运行时可以推断出类型,

但是,如果我将方法更改为:

T foo<T,T2>(T2 bar){...}
Run Code Online (Sandbox Code Playgroud)

然后我必须在'full'中调用它,同时指定输入参数类型和返回类型:

string s = string.Empty;
foo<int,string>(s);
Run Code Online (Sandbox Code Playgroud)

有没有办法我可以简写这个,所以我不需要指定输入参数类型?IE

foo<int>(s);
Run Code Online (Sandbox Code Playgroud)

谢谢

c# generics type-inference

5
推荐指数
1
解决办法
235
查看次数

标签 统计

.net ×1

c# ×1

com ×1

generics ×1

regfreecom ×1

side-by-side ×1

type-inference ×1

vba ×1