アセンブリに署名しようとして、次のエラーが発生しました。
「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
プロパティだからです。
クラスは 1 つしかないため、メソッドが返すものBugFactory
とは異なる戻り値の型を必要とするインターフェイスの問題ではありません。BugFactory
メソッドを return として明示的にマークしても、 DLLに厳密ThirdPartyLibrary.BugFactory
な名前を付けようとするとエラーが発生します。Utils
ThirdPartyLibrary
これは、CLS に準拠していない古い COM ライブラリの結果でしょうか? 私はこのライブラリを制御できません。アセンブリに署名しようとしないUtils
と、インターフェイス エラーは発生しません。
私の大きな質問は、このアセンブリに署名するにはどうすればよいですか?
編集:ここにあるものIConnection
があります:
using ThirdPartyLibrary; // The only using statement
namespace Interfaces
{
public interface IConnection
{
...
BugFactory BugFactory();
}
}