·您现在的位置: 江北区云翼计算机软件开发服务部 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> [C#]AssemblyHelper

[C#]AssemblyHelper

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23

关键代码:

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());
        }
    }
}

测试结果:

image