gpt4 book ai didi

c# - 在 C# 中获取程序集描述的简化方法?

转载 作者:可可西里 更新时间:2023-11-01 08:00:42 25 4
gpt4 key购买 nike

我在阅读一本 .NET 2.0 的书时发现了这个获取应用程序程序集描述的示例代码:

static void Main(string[] args)
{
Assembly assembly = Assembly.GetExecutingAssembly();
object[] attributes =
assembly.GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
if (attributes.Length > 0)
{
AssemblyDescriptionAttribute descriptionAttribute =
(AssemblyDescriptionAttribute)attributes[0];
Console.WriteLine(descriptionAttribute.Description);
}
Console.ReadKey();
}

简单地获取程序集描述需要很多代码,我想知道在 .NET 3.5+ 中是否有更简单的方法使用 LINQ 或 lambda 表达式来执行此操作?

最佳答案

没有,真的。您可以像这样使其“更流畅”一点:

 var descriptionAttribute = assembly
.GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false)
.OfType<AssemblyDescriptionAttribute>()
.FirstOrDefault();

if (descriptionAttribute != null)
Console.WriteLine(descriptionAttribute.Description);

[编辑将 Assembly 更改为 ICustomAttributeProvider,cf。 Simon Svensson 的回答)

如果您需要大量此类代码,请在 ICustomAttributeProvider 上创建一个扩展方法:

 public static T GetAttribute<T>(this ICustomAttributeProvider assembly, bool inherit = false) 
where T : Attribute
{
return assembly
.GetCustomAttributes(typeof(T), inherit)
.OfType<T>()
.FirstOrDefault();
}

自 .Net 4.5 以来,正如 Yuriy 解释的那样,框架中提供了一种扩展方法:

var descriptionAttribute = 
assembly.GetCustomAttribute<AssemblyDescriptionAttribute>();

关于c# - 在 C# 中获取程序集描述的简化方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10203575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com