2009-10-20 11 views
3

Dans la documentation MSDN, System.Reflection.Assembly a une propriété appelée CodeBase définie comme overridable.Comment remplacer une propriété dans une classe non-héritable?

Public Overridable ReadOnly Property CodeBase As String 

Cependant, si je tente de créer une nouvelle classe qui hérite System.Reflection.Assembly, je reçois un message d'erreur qui me dit qu'il ne peut pas être héritée. Alors, comment puis-je remplacer cette propriété?

+0

Je recommanderais probablement d'utiliser l'encapsulation plutôt que l'héritage pour ce problème. –

+0

Je ne veux pas savoir pourquoi vous avez besoin d'hériter de l'assemblage ... –

+0

Stefan, je voulais charger un assemblage à partir d'un tableau d'octets tout en définissant la propriété codebase à l'emplacement du fichier d'assemblage d'origine. Je sais que vous avez dit que vous ne voulez pas savoir, mais je pense que peut-être ma raison n'était pas aussi mauvaise que vous pensiez :) –

Répondre

5

Malheureusement, vous ne pouvez pas faire cela.

Bien que la classe Assembly elle-même soit déclarée public, elle fournit uniquement un constructeur internal. Cela signifie en fait qu'il ne peut être instancié (ou hérité) qu'à partir de son propre assemblage, mscorlib.

3

Je ne pense pas que vous le pouvez. Alors que Assembly n'est pas sealed (NotInheritable dans VB.NET), il n'a pas de constructeur public; le constructeur est internal (Friend dans VB.NET). Donc, il peut être hérité, mais seulement des types dans le même assemblage que lui-même (qui est mscorlib).

+0

Marqué cela comme la réponse, car il était d'environ 10 secondes plus rapide que l'autre. –

+0

Pas vraiment sûr, mais je pense vraiment que Luke était un peu plus rapide que moi. –

+0

Aurait pu jurer que celui-ci était plus haut dans la liste triée par le plus ancien. Eh bien, merci pour votre honnêteté;) –

Questions connexes