.NET/Silverlight应用程序信息获取助手类

.NET/Silverlight应用程序开发过程中,经常需要展示关于应用程序的一些信息,例如“关于”对话框。这些信息通常包括标题、产品、版权、公司、描述、商标、配置、版本等。虽然对于经验丰富的开发者来说,手动获取这些信息并不困难,但重复这一过程确实繁琐。此外,初级开发者在使用反射技术获取这些属性时可能会遇到困难。本文将介绍一个优雅的助手类,利用泛型和Lambda表达式一次性解决这个问题。

使用代码

要使用这个助手类,首先需要创建一个AssemblyAttributes类的实例,然后查询其属性:

AssemblyAttributes assembly = new AssemblyAttributes(); Console.WriteLine("Title: " + assembly.Title); Console.WriteLine("Product: " + assembly.Product); Console.WriteLine("Version: " + assembly.Version);

如果需要指定特定的程序集,可以在构造函数中传入:

var assembly = new AssemblyAttributes(Assembly.GetEntryAssembly());

代码实现要点

这个助手类的每个属性实现都非常优雅,这要归功于泛型和Lambda表达式的使用:

public string Title { get { return GetValue(a => a.Title); } }

这个类的核心是GetValue方法,它从程序集中获取一个泛型自定义属性。如果该属性存在,则返回getValue委托的结果。如果属性不存在,则返回空字符串。

string GetValue(Func getValue) where T : Attribute { T a = (T)Attribute.GetCustomAttribute(_assembly, typeof(T)); return a == null ? "" : getValue(a); } public string Version { get { #if !SILVERLIGHT return _assembly.GetName().Version.ToString(); #else return _assembly.FullName.Split(',')[1].Split('=')[1]; #endif } }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485