
·您现在的位置: 江北区云翼计算机软件开发服务部 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> [C#]AssemblyHelper
关键代码:
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());
}
}
}
测试结果:
