STRUCT VIDE

Messages postés
9
Date d'inscription
jeudi 9 octobre 2003
Statut
Membre
Dernière intervention
26 septembre 2007
-
Messages postés
9
Date d'inscription
jeudi 9 octobre 2003
Statut
Membre
Dernière intervention
26 septembre 2007
-
Salut à tous. Voilà, je me pose une petite question ... Comment créer en C# une structure véritablement vide ... Parce que si on en crée une comme ca :

public struct Vide
{
}

bah elle hérite automatiquement de la classe Object. Et moi je veux pas. Je veux ne pas retrouver les méthodes Equals, ReferenceEquals, GetHashCode, GetType, et ToString. Quelqu'un sait-il comment faire ca ? Merci beaucoup ...


Cyberax

10 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Salut, C'est pourtant bien une structure vide.. Quelle utilisaton veux tu en faire par la suite !?
Messages postés
9
Date d'inscription
jeudi 9 octobre 2003
Statut
Membre
Dernière intervention
26 septembre 2007

Elle n'est pas tout à fait vide car elle contient des méthodes héritées de la classe Object du framework. Si possible, et je voudrais savoir si ca l'est, j'aimerai que ma structure n'hérite de rien. Pour ne pas avoir les méthodes que je cite dans mon premier message ...

L'utilisation que je veux en faire c'est créer un nouveau type. Je voudrais avoir une structure tout à fait vide au départ. Mais est-ce que c'est faisable, ca c'est autre chose ... J'ai réussi à remplacer les méthodes héritées par une méthode bidon (avec un override), mais j'ai pas réussi à les supprimer totalement. Même les cacher en les mettant en private c'est pas possible. Le compilo dit qu'on peut pas utiliser override et private en même temps ...


Cyberax
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
Salut,
Le concept de l'orienté object veut (en C# en tout cas) qu'il y ait une seule et unique class mère, à savoir object. Les autres hérites ensuite directement ou indirectement de cette classe...

<hr size="2" />VC# forever
Messages postés
9
Date d'inscription
jeudi 9 octobre 2003
Statut
Membre
Dernière intervention
26 septembre 2007

Et on ne peut absolument pas empêcher ca ? Ou du moins, masquer l'héritage au niveau des méthodes de classes ? Les rendre private ou des trucs dans ce genre ? Bon, tant pis.



Cyberax
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
On peut éventuellement les cacher pour qu'elles ne soit pas visible via intellisens, mais on ne peut pas "supprimer" l'héritage non....

<hr size="2" />VC# forever
Messages postés
9
Date d'inscription
jeudi 9 octobre 2003
Statut
Membre
Dernière intervention
26 septembre 2007

C'est vrai ? Alors comment tu ferais ca par exemple ? On peut choisir ce que l'intellisens affiche ? Je savais même pas ... Quelqu'un peut me donner un exemple concret ? Merci beaucoup.

Cyberax
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
Tu peux jeter un oeil sur ce topic

<hr size="2" />VC# forever
Messages postés
9
Date d'inscription
jeudi 9 octobre 2003
Statut
Membre
Dernière intervention
26 septembre 2007

Merci beaucoup, mais le problème reste entier.

[EditorBrowsable(EditorBrowsableState.Never)] permet de masquer
à l'intellisens une méthode ou une propriété que tu déclares, ou
que tu override, mais pas une méthode static héritée !
Comme tu peux pas modifier sa définition, tu peux pas dire à
l'intellisens de ne pas l'afficher ... C'est dommage d'ailleurs.

Y'aurait pas moyen de passer par une interface ? Je me demande :
n'est-il pas possible de cacher à l'intellisens une propriété
héritée que l'on ne souhaite pas redéfinir ou modifier ? Comme
bool Equals (object objA, object objB) par exemple ...

Arf, que de questions en suspens ! ...

Vraiment merci pour les futurs éclaircissements.

Cyberax
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
Je ne sais pas, mais je ne comprend pas pourquoi tu as besoin de faire de telles choses.
Si tu expliques, peut-être qu'on peut trouver un autre moyen...

<hr size="2" />VC# forever
Messages postés
9
Date d'inscription
jeudi 9 octobre 2003
Statut
Membre
Dernière intervention
26 septembre 2007

Bon, ok, je m'explique. Toutes les structures ou classes héritent visiblement de Object. C'est le principe de base de ce type de programmation, ca, je l'ai compris. Maintenant, je voudrai implémenter un nouveau type. On peut appeler ca comme ca. Seulement, je voudrai que, vu de l'utilisateur, cette structure semble complètement vide des méthodes héritées de la classe Object. Je veux obtenir une structure qui hérite de Object, mais sans en avoir l'air (à défaut de ne pas pouvoir créer une structure qui n'hérite de rien du tout).
Il me faudrait un truc qui soit ou semble vide dès le départ. Et je rajouterai alors après ce dont j'ai besoin. Vous croyez que c'est faisable ?

Cyberax