IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Classe abstraite et dérivée


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Par défaut Classe abstraite et dérivée
    Bonjour,
    Je désire implémenter la classe abstraite suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
        public abstract class HttpLayer : SimpleLayer, IEquatable<HttpLayer>
        {
            protected HttpLayer();
     
           public Datagram Body { get; set; }
           public HttpHeader Header { get; set; }
           public abstract bool IsRequest { get; }
           public bool IsResponse { get; }
           public override int Length { get; }
           public HttpVersion Version { get; set; }
     
           public virtual bool Equals(HttpLayer other);
           public override bool Equals(Layer other);
           protected override void Write(byte[] buffer, int offset);
        }
    J'essaye de créer la classe dérivée suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     public class testHttp : HttpLayer
        {    
            public testHttp() : base()
            {
     
            }
     
            public override bool IsRequest
            {
                get { throw new NotImplementedException(); }
            }
        }
    Les erreurs suivantes apparaissent à la compilation:

    Erreur 1 '...testHttp' n'implémente pas le membre abstract hérité '...Http.HttpLayer.WriteFirstLine(byte[], ref int)'

    Erreur 2 '...testHttp' n'implémente pas le membre abstract hérité 'PcapDotNet.Packets.Http.HttpLayer.FirstLineLength.get'
    Je ne trouve aucune trace sous Visual Studio de ces deux membres WriteFirstLine et FirstLineLength.
    J'ai essayé en implémentant dans la classe dérivée Write et Length, sans succès.

    J'ai cherché des pistes sur le net, mais je n'arrive toujours pas à comprendre comment implémenter cette classe HttpLayer. De plus, je me demande ce que je doit mettre dans:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     public override bool IsRequest
            {
                get { throw new NotImplementedException();//??? }
            }
    J'ai testé,
    get { return !base.IsResponse; }
    ,mais sans grande conviction...

    Je vous remercie pour toute aide!

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Par défaut
    Bonjour,

    Euh ces méthodes ne proviennent-elles pas de l'interface IEquitable ?

  3. #3
    Membre chevronné Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Par défaut
    Citation Envoyé par ostenhard Voir le message
    Bonjour,

    Euh ces méthodes ne proviennent-elles pas de l'interface IEquitable ?
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        public interface IEquatable<T>
        {
     
            bool Equals(T other);
        }
    En fait, je ne trouve pas ces méthodes!

  4. #4
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Par défaut
    Et de SimpleLayer ?

  5. #5
    Membre chevronné Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Par défaut
    J'ai parcouru toutes les classes mères, sans succès!

    Je ne comprends pas d'où proviennent ces méthodes.
    Mais je ne suis pas sûre qu'en réalité je n'ai à m'en soucier pour l'implémentation de la classe HttpLayer.

    J'avoue être dans le flou concernant les classes abstraites.

    Disposant du code de la classe HttpLayer, vous la dériveriez comment cette classe?

  6. #6
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Salut,
    Je n'ai jamais jouer avec cette lib donc je ne sais pas comment elle s'utilise.
    Cependant, j'ai été la télécharger rapidement et passer un coup de reflector dessus, voici ce qu'il en ressort :
    - La méthode et la propriété dont tu parles sont déclarés directement sur HttpLayer, mais en internal, autrement dit tu ne pourra pas les surcharger puisqu'il faudrait être dans le même assembly.
    - Il existe déjà deux dérivés directes, non abstraits, de la classe HttpLayer, le premier étant HttpRequestLayer et le second HttpResponseLayer.
    - Ces deux classes possèdent des constructeurs publics et peuvent donc êtr instanciées.
    - La classe HttpRequestDatagram possède une méthode "ExtractLayer" qui retourne un HttpRequestLayer (la méthode est typée ILayer, mais son code instancie et retourne un HttpRequestLayer).

    Donc à mon avis tu n'a pas du tout à implémenter cette classe.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/03/2015, 19h27
  2. Réponses: 3
    Dernier message: 23/09/2009, 09h52
  3. instanciation de classe dérivée de classe abstraite
    Par zeder59 dans le forum Débuter
    Réponses: 7
    Dernier message: 24/04/2009, 10h12
  4. Réponses: 10
    Dernier message: 30/11/2008, 21h17
  5. Réponses: 4
    Dernier message: 05/11/2007, 20h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo