代码之家  ›  专栏  ›  技术社区  ›  Lance Fisher

属性返回子类的程序集版本

  •  4
  • Lance Fisher  · 技术社区  · 14 年前

    在一个C项目中,有一个这样的基类:

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

    此项目的版本为0.0.1.1。

    在另一个C项目中,我有一个类继承自AbstractVersionedBase,如下所示:

    public class Versioned : AbstractVersionedBase
    {
    }
    

    此项目的版本为0.0.1.2。

    当我调用具体类的属性时,它返回在其中定义抽象类的程序集的版本。

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

    我希望子类返回其程序集的版本,但不必在子类中重写代码。你有什么想法吗?

    2 回复  |  直到 14 年前
        1
  •  3
  •   CodesInChaos    14 年前

    需要获取声明动态类型的程序集 GetType().Assembly :

    public string Version
    {
        get
        {
            return GetType().Assembly.GetName().Version.ToString(); 
        }
    }
    
        2
  •  2
  •   Eric Mickelsen    14 年前

    使用 this.GetType().Assembly 相反。