自定义程序集属性到字符串 [英] Custom Assembly Attribute to String

查看:30
本文介绍了自定义程序集属性到字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我定义了一个自定义程序集属性,并试图将其调用为一个字符串,就像我之前的帖子调用自定义程序集属性.我现在正试图在 c# 中完成同样的事情.

I have defined a custom assembly attribute and am trying to call it into a string much like my previous post Calling Custom Assembly Attributes. I am now trying to accomplish the very same thing in c#.

我已经定义了我的自定义属性:

I have defined my custom attribute:

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

但是,当我尝试构建时:

However when trying to build I get:

'object' 不包含 'getversion' 的定义,也没有扩展方法getversion"接受类型的第一个参数可以找到对象"(您是否缺少 using 指令或汇编参考?)

'object' does not contain a definition for 'getversion' and no extension method 'getversion' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)

对此的任何帮助将不胜感激.

Any help on this would be much appreciated.

推荐答案

你只需要一个演员表,因为 Assembly.GetCustomAttributes(xxx) 返回类型是 Object[]

you just need a cast, as Assembly.GetCustomAttributes(xxx) return type is Object[]

所以

ViewBag.Version = (attr[0] as SmverAttribute).getversion;

编辑

这可以像那样重写(例如)

this could be rewritten like that (for example)

var attribute = Assembly.GetExecutingAssembly()
                        .GetCustomAttributes(false)
                        .OfType<SemverAttribute>()
                        .FirstOrDefault();

ViewBag.version = (attribute == null)
                  ? string.Empty
                  : attribute.getversion;

这篇关于自定义程序集属性到字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆