2010-10-15 20 views
4

Dans un projet C# ont une classe de base comme celui-ci:Propriété à retourner la version de montage des classes descendant

public abstract class AbstractVersionedBase 
{ 
    public string Version { get { 
     return Assembly.GetExecutingAssembly().GetName().Version.ToString(); 
    }} 
} 

Ce projet a une version de 0.0.1.1.

Dans un autre projet C# J'ai une classe qui hérite de AbstractVersionedBase comme ceci:

public class Versioned : AbstractVersionedBase 
{ 
} 

Ce projet a une version de 0.0.1.2.

Quand j'appelle la propriété sur la classe concrète, elle renvoie la version de l'assemblage que la classe abstraite est définie dans.

var versioned = new Versioned(); 
Console.WriteLine("Version" + versioned.Version); 
//writes 0.0.1.1, but I want 0.0.1.2 

Je voudrais que la classe descendante pour retourner la version de son assemblage, mais ne pas avoir à réécrire le code pour le faire dans la classe descendante. As tu des idées?

+1

Pourquoi jeter à la chaîne? Quitter le type en tant que 'Version' peut être utile pour la comparaison. – si618

Répondre

3

Vous devez obtenir l'assemblage où le type dynamique est déclarée avec GetType().Assembly:

public string Version 
{ 
    get 
    { 
     return GetType().Assembly.GetName().Version.ToString(); 
    } 
} 
2

Utilisez à la place this.GetType().Assembly.