自定义程序集属性为字符串
本文关键字:字符串 属性 程序集 自定义 | 更新日期: 2023-09-27 18:06:58
我已经定义了一个自定义程序集属性,我试图把它称为一个字符串,就像我以前的帖子调用自定义程序集属性。我现在正尝试用c#完成同样的事情。
我已经定义了自定义属性:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Reflection;
namespace authenticator.Properties
{
public class SemverAttribute : Attribute
{
private string _number;
public string getversion
{
get {return _number;}
}
public SemverAttribute(string Number)
{
_number = Number;
}
}
}
和我试图调用它:
// Define the semver version number
Assembly assy = Assembly.GetExecutingAssembly();
object[] attr = null;
attr = assy.GetCustomAttributes(typeof(SemverAttribute), false);
if (attr.Length > 0)
{
ViewBag.Version = attr[0].getversion;
}
else
{
ViewBag.Version = string.Empty;
}
然而,当试图建立我得到:
'object'不包含'getversion'的定义扩展方法'getversion'接受类型的第一个参数可以找到'object'(您是否缺少using指令或装配参考?)
您只需要强制转换,因为Assembly.GetCustomAttributes(xxx)
返回类型是Object[]
ViewBag.Version = (attr[0] as SmverAttribute).getversion;
编辑可以这样重写(例如)
var attribute = Assembly.GetExecutingAssembly()
.GetCustomAttributes(false)
.OfType<SemverAttribute>()
.FirstOrDefault();
ViewBag.version = (attribute == null)
? string.Empty
: attribute.getversion;