J'ai essayé de signer un assemblage et d'obtenir cette erreur:erreur non implémentée lors de la signature C#
'Utils.Connection' does not implement interface member 'Interfaces.IConnection.BugFactory()'. 'Utils.Connection.BugFactory()' cannot implement 'Interfaces.IConnection.BugFactory()' because it does not have the matching return type of 'ThirdPartyLibrary.BugFactory'.
Cette erreur ressemble à un mensonge sale, sale! En Utils.Connection
, j'ai cette méthode:
public new BugFactory BugFactory()
Je ne pense pas que le mot-clé new
est le problème parce que 1) l'enlever ne s'arrête pas l'erreur et 2) Je vais avoir la même erreur avec une autre classe qui implémente IConnection
qui fait pas utiliser le mot-clé new
. Mise à jour: si j'utilise override
au lieu de new
, je reçois cette erreur:
'Utils.Connection.BugFactory()': cannot override because 'ThirdPartyLibrary.ConnectionClass.BugFactory' is not a function
C'est parce que ThirdPartyLibrary.ConnectionClass.BugFactory
est une propriété.
Il n'existe qu'une seule classe BugFactory
, donc ce n'est pas un problème d'interface nécessitant un type de retour BugFactory
différent de celui retourné par la méthode. Même si je marque explicitement ma méthode comme renvoyant ThirdPartyLibrary.BugFactory
, j'obtiens toujours l'erreur lorsque j'essaie de nommer fortement la DLL Utils
.
Cela peut-il être le résultat de ThirdPartyLibrary
étant une ancienne bibliothèque COM qui n'est pas compatible CLS? Je n'ai aucun contrôle sur cette bibliothèque. Lorsque je fais pas essayez de signer l'assembly Utils
, je ne reçois pas l'erreur d'interface.
Ma grande question est: comment puis-je signer cet assemblage?
Edit: voici ce que IConnection
a:
using ThirdPartyLibrary; // The only using statement
namespace Interfaces
{
public interface IConnection
{
...
BugFactory BugFactory();
}
}
@Sarah - avez-vous au fond de cela? Nick estime que ma réponse pourrait bien ne pas être sur la bonne voie, et il a peut-être raison, donc je (nous deux!) Serait intéressé de savoir si vous avez trouvé la cause première, Ta. –
Mon collègue et moi avons travaillé sur ce problème et nous n'avons toujours pas trouvé de solution. :( –
Cela peut valoir la peine de passer par la réponse de Nick si vous ne l'avez pas déjà ... –