我一直在尝试签署程序集并收到此错误:
“Utils.Connection”没有实现接口成员“Interfaces.IConnection.BugFactory()”。“Utils.Connection.BugFactory()”无法实现“Interfaces.IConnection.BugFactory()”,因为它没有匹配的返回类型“ThirdPartyLibrary.BugFactory”。
那个错误看起来像一个肮脏,肮脏的谎言!在Utils.Connection
,我有这个方法:
public new BugFactory BugFactory()
我不认为new
关键字是问题,因为 1)删除它不会停止错误,2)我在另一个实现不使用关键字的类时遇到IConnection
同样的new
错误 。更新: 如果我使用,override
而不是new
,我得到这个错误:
'Utils.Connection.BugFactory()':无法覆盖,因为 'ThirdPartyLibrary.ConnectionClass.BugFactory' 不是函数
这是因为ThirdPartyLibrary.ConnectionClass.BugFactory
是一个属性。
只有一个BugFactory
类,因此接口需要BugFactory
与方法返回的返回类型不同的返回类型不是问题。即使我明确地将我的方法标记为返回ThirdPartyLibrary.BugFactory
,当我尝试对Utils
DLL 进行强命名时,我仍然会收到错误消息。
这可能ThirdPartyLibrary
是不符合 CLS 的旧 COM 库的结果吗?我无法控制这个库。当我不尝试签署Utils
程序集时,我没有收到接口错误。
我的大问题是:我如何签署这个程序集?
编辑:这里有什么IConnection
:
using ThirdPartyLibrary; // The only using statement
namespace Interfaces
{
public interface IConnection
{
...
BugFactory BugFactory();
}
}