这就是我想要达到的目标:
将会有dll只包含从我的应用程序调用我的实际方法的方法,我可以与外界共享该dll,无论它包含哪种方法,因为实际方法将在我的应用程序中的dll中,但如果有人使用他/她可以设法让我的应用程序在我想要的范围内做一些事情。
我希望我可以描述我想要的东西。我不知道你是否使用过Skype4COM.dll。它实际上是这样的,它以某种方式连接到Skype客户端,让我打电话给我想要的一个。例如:
Skype s = new Skype();
s.PlaceCall("phoneNumber");
我在我的项目中导入Skype4COM dll,当我在C#中编写如上所示的代码时,它会连接到Skype并拨打电话。
我认为没有实际的方法可以在Skype4Com.dll中进行调用。我认为它只有某种方法可以达到Skype API中的实际方法并进行调用,因此无论开发人员在Skype中进行哪些更改,只要签名保持不变,它就不会影响Skype4Com.dll包装。
所以,这就是我想要实现的目标,我对编写包装器不太感兴趣,这是一个示例案例,我想编写一个dll,它可以访问我的API并使用方法签名,让人们从外面使用应用程序所以只要签名保持不变,如果我想在块之间改变一些东西我不需要改变给出的外部的dll ..
提前感谢....
答案 0 :(得分:3)
如果我理解正确,您希望向外部用户公开应用程序功能的有限子集。实际上,您希望提供服务,但没有别的。
然后,您应该使用Windows Communication Foundation在您的应用程序(或其他地方)内托管服务。该服务可以使用SOAP等行业标准协议;或者可以使用REST;或者它可以为您的.NET客户端使用TCP / IP上更快的二进制传输。
它非常适合像您这样的面向服务的情况。
答案 1 :(得分:1)
你所描述的是围绕Skype的COM包装器。如果你真的想要一个围绕你的C#DLL的COM包装器,你可以这样做。 Microsoft提供了an example,演示了如何从C#创建COM类。
如果您正在考虑从托管DLL提供代码包装,那么它就像提供DLL的使用者可以使用的公共接口一样简单。您可能还希望在GAC(全局程序集缓存)中安装代码,以便任何想要调用API的人都可以这样做,而无需在整个系统中放置代码副本。
答案 2 :(得分:1)