Erreur lors de la mise en Œuvre de l'Interface: la classe n'implémente pas l'interface de membres
Je suis en train de implémente l'IUpdatable.
Erreur De 1 'WebRole1.InfoManager' n'implémente pas l'interface de membre du Système.Les données.Services.IUpdatable.ClearChanges()'
Toutes les erreurs que je reçois sont de dire que je ne suis pas la mise en œuvre de tous les membres d'interface, mais j'applique certains pas tous bien sûr. Je n'ai pas mis le trou de code, j'espère que vous pouvez comprendre.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Services;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.ServiceRuntime;
using Microsoft.WindowsAzure.StorageClient;
namespace WebRole1
{
public class InfoManager : IUpdatable
{
private TableServiceContext context;
//To Generate DataConnectionString and svcClient
private TableServiceContext GetContext()
{
//Implemented code
}
public CommentManager()
{
context = GetContext();
}
//To get my table infos
public IQueryable<Info> Infos
{
get
{
return context.CreateQuery<Info>("Infos").AsTableServiceQuery();
}
}
//Creating the resource and cheking the compatibility of the type and do an add Object
public Object CreateResource(string containerName, string fullTypeName)
{
//Implemented Code
}
//Return the instance of the resource represented by the object
public Object ResolveResource(Object resource)
{
return resource;
}
public void SaveChanges()
{
context.SaveChangesWithRetries();
}
public void setValue(Object targetResource, string propertyName, Object propertyValue)
{
//Implemented Code
}
}
}
OriginalL'auteur 404Dreamer_ML | 2011-03-18
Vous devez vous connecter pour publier un commentaire.
C'est une interface, vous DEVEZ donc mettre en œuvre tous les membres - si vous voulez, ou pas.
Cette erreur ne s'en iront pas jusqu'à ce que vous implémentez l'interface dans son ensemble. Vous pouvez faire ce que vous voulez dans le champ d'application de la méthode mise en œuvre, de dire que, même élever un
NotImplementedException
par exemple - mais qui est votre application de sorte que le compilateur est heureux.Je ne vais pas fermer les yeux sur l'ignorance (vous devez encore apprendre le faire et pourquoi), mais je vais vous donner une astuce qui peut aider dans votre apprentissage et, si rien d'autre, l'avenir de la productivité:
À partir de Visual Studio, lorsque vous demandez à la classe de code d'ouverture de fichier, qui est d'implémenter l'interface alors vous pouvez avoir VS cracher le code pour vous...
À partir de la liste déroulante, vous devriez voir l'option
Implement Interface 'IMyInterface'
, cliquez dessus et voilà! Il va automatiquement générer le squelette corps de méthode pour vous.Alors que c'est certainement la bonne approche, il n'est pas exactement une bonne habitude à prendre. En tant que collègue, je voudrais toujours vous demander pourquoi vous êtes la mise en œuvre d'une interface sans toutes ses méthodes. Vous êtes essentiellement le mensonge, à moins que l'interface dicte que ces implémentations sont possibles.
Si vous voulez vite voir ma mise à jour de l'auto-génération. Si vous voulez le faire à la main, puis de définir le corps de la méthode et l'omission de toute exception de sensibilisation serait plus rapide que ajout un
throw
.Yep merci encore à apprendre en Fait 🙂 très utile
OriginalL'auteur Grant Thomas
Je ne comprends pas ce que la question est. Si vous implémenter une interface, vous devez implémenter toutes les méthodes de cette interface. Sinon, le compilateur va donner une erreur.
Oui. Il donnera à des erreurs, à moins que vous mettre en œuvre tous les méthodes. Qu'est ce que la mise en œuvre d'une interface signifie, que vous mettre en œuvre toutes les méthodes.
OriginalL'auteur jdmichal
Je pense que l'erreur est clair: vous n'êtes pas la mise en œuvre de tous les membres d'interface, ce qui est nécessaire bien sûr.
OriginalL'auteur Gerrie Schenck