[C#]AssemblyHelper

來源:互聯網
上載者:User

標籤:

關鍵代碼:

using System;using System.IO;using System.Reflection;namespace YanZhiwei.DotNet2.Utilities.Common{    /// <summary>    /// Assembly 協助類    /// </summary>    public class AssemblyHelper    {        #region 建構函式        Assembly assembly = null;        /// <summary>        /// 建構函式        /// </summary>        public AssemblyHelper()        {            assembly = Assembly.GetExecutingAssembly();        }        /// <summary>        /// 建構函式        /// </summary>        /// <param name="path">dll,exe路徑</param>        public AssemblyHelper(string path)        {            if (File.Exists(path))                assembly = Assembly.LoadFile(path);        }        #endregion        #region 私人方法        private void GetAssemblyCommon<T>(Action<T> assemblyFacotry) where T : Attribute        {            if (assembly != null)            {                object[] _attributes = assembly.GetCustomAttributes(typeof(T), false);                if (_attributes.Length > 0)                {                    T _attribute = (T)_attributes[0];                    assemblyFacotry(_attribute);                }            }        }        #endregion        #region 擷取應用程式集的標題        /// <summary>        /// 擷取應用程式集的標題        /// </summary>        /// <returns>程式集的標題</returns>        public string GetTitle()        {            string _title = string.Empty;            GetAssemblyCommon<AssemblyTitleAttribute>(_ass => _title = _ass.Title);            if (string.IsNullOrEmpty(_title))            {                _title = Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);            }            return _title;        }        #endregion        #region 擷取應用程式產品名稱        /// <summary>        /// 擷取應用程式產品名稱        /// </summary>        /// <returns>產品名稱</returns>        public string GetProductName()        {            string _product = string.Empty;            GetAssemblyCommon<AssemblyProductAttribute>(_ass => _product = _ass.Product);            return _product;        }        #endregion        #region 擷取應用程式版本        /// <summary>        /// 擷取應用程式版本        /// </summary>        /// <returns>版本</returns>        public string GetVersion()        {            return assembly.GetName().Version.ToString();        }        #endregion        #region 擷取應用程式說明        /// <summary>        /// 擷取應用程式說明        /// </summary>        /// <returns>說明</returns>        public string GetDescription()        {            string _description = string.Empty;            GetAssemblyCommon<AssemblyDescriptionAttribute>(_ass => _description = _ass.Description);            return _description;        }        #endregion        #region 擷取應用程式著作權資訊        /// <summary>        /// 擷取應用程式著作權資訊        /// </summary>        /// <returns>著作權資訊</returns>        public string GetCopyright()        {            string _copyright = string.Empty;            GetAssemblyCommon<AssemblyCopyrightAttribute>(_ass => _copyright = _ass.Copyright);            return _copyright;        }        #endregion        #region 擷取應用程式公司名稱        /// <summary>        /// 擷取應用程式公司名稱        /// </summary>        /// <returns>公司名稱</returns>        public string GetCompany()        {            string _company = string.Empty;            GetAssemblyCommon<AssemblyCompanyAttribute>(_ass => _company = _ass.Company);            return _company;        }        #endregion        #region 擷取應用程式顯示名稱        /// <summary>        /// 擷取應用程式顯示名稱        /// </summary>        /// <returns>應用程式顯示名稱</returns>        public string GetAppFullName()        {            return assembly.FullName.ToString();        }        #endregion    }}

單元測試:

using Microsoft.VisualStudio.TestTools.UnitTesting;using System;namespace YanZhiwei.DotNet2.Utilities.Common.Tests{    [TestClass()]    public class AssemblyHelperTests    {        AssemblyHelper assHelper = null;        [TestInitialize]        public void TestInit()        {            string _path = string.Format(@"{0}\TestSource\DotNet2.Interfaces.dll", AppDomain.CurrentDomain.BaseDirectory);            assHelper = new AssemblyHelper(_path);        }        [TestMethod()]        public void GetTitleTest()        {            Assert.AreEqual("YanZhiwei.DotNet2.Interfaces", assHelper.GetTitle());        }        [TestMethod()]        public void GetProductNameTest()        {            Assert.AreEqual("YanZhiwei.DotNet2.Interfaces", assHelper.GetProductName());        }        [TestMethod()]        public void GetVersionTest()        {            Assert.AreEqual("1.0.5483.24630", assHelper.GetVersion());        }        [TestMethod()]        public void GetDescriptionTest()        {            Assert.AreEqual("", assHelper.GetDescription());        }        [TestMethod()]        public void GetCopyrightTest()        {            Assert.AreEqual("Copyright ? YanZhiwei 2014", assHelper.GetCopyright());        }        [TestMethod()]        public void GetCompanyTest()        {            Assert.AreEqual("", assHelper.GetCompany());        }        [TestMethod()]        public void GetAppFullNameTest()        {            Assert.AreEqual("DotNet2.Interfaces, Version=1.0.5483.24630, Culture=neutral, PublicKeyToken=null", assHelper.GetAppFullName());        }    }}

測試結果:

[C#]AssemblyHelper

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.