1

J'ai une application Windows qui accède à une feuille de calcul Google pour créer un annuaire téléphonique. Quand j'essaie d'ouvrir l'annuaire, je suis marqué avec System.NotImplementedException: The method or operation is not implemented. Je ne suis pas vraiment sûr pourquoi, parce qu'il semble être en train d'être implémenté?NotImplementedException lors de l'accès à ServiceAccountCredential C#

Ceci est le premier endroit qui est épinglées la question:

internal object FromCertificate(X509Certificate2 certificate) 
     { 
      throw new NotImplementedException(); //Error flags this line 
     } 

C'est la deuxième. Pour autant que je sache, il n'y a rien de mal avec cette partie mais elle signale toujours une exception.

ServiceAccountCredential credential = new ServiceAccountCredential(
      new ServiceAccountCredential.Initializer(serviceAccountEmail) 
      { 
       Scopes = new[] { "https://www.googleapis.com/auth/spreadsheets", "https://docs.google.com/feeds" } 
      }.FromCertificate(certificate)); 

Toutes les suggestions seraient vraiment appréciées. J'utilise C# avec Visual Studio 2015.

Répondre

1

Je ne suis pas vraiment sûr pourquoi, car il semble qu'il est en cours d'implémentation?

Le cadeau est cette ligne ici:

throw new NotImplementedException(); 

Le throw new NotImplementedException() est généralement passe-partout à partir de Visual Studio lorsque des méthodes stubbing.

Il n'est pas implémenté, juste parce que vous l'appelez de l'objet avec .FromCertificate(certificate). Cela appelle simplement la méthode, qui exécute ensuite le code à l'intérieur. Ergo, il frappe alors votre code throw new NotImplementedException(); - brisant ainsi etc.

Pour mettre en œuvre votre méthode, vous devez supprimer le throw new NotImplementedException(); et le remplacer par votre propre logique.

Vous devrez ajouter du code dans votre méthode FromCertificate():

internal object FromCertificate(X509Certificate2 certificate) 
{ 
    // Do some work in here 
} 

Hope this helps :)

+1

Juste pour ajouter pourquoi votre "deuxième place" faiblit jusqu'à une exception: 'votre NotImplementedException' de votre méthode remonte à zéro, et le débogueur vous avertit du point où il a été appelé, quand il revient là. Si vous manipulez ('catch') plus bas, il ne rebondira pas à moins que vous ne lanciez de nouveau (' throw ') –