c#方法属性



有没有办法在没有注入的情况下实现这一点?Topic是一个UserControl。我正在尝试检查标题并将其设置在属性中。

public partial class Topic: TopicBase
{
[Topic(Title = "My Topic")]
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
}
}

当我寻找属性时,我在TopicBase.cs中得到null

protected override void OnInit(EventArgs e)
    {
        var topicAttr = Attribute.GetCustomAttribute(this.GetType(), typeof(TopicAttribute)); //topicAttr is null here.
        if (topicAttr != null)
        {
            SetTopic(((TopicAttribute)topicAttr).Title);
        }
    }

您正在检查类型的属性。属性位于方法上。要么更改查询,要么按照查询的期望将属性放在类型上:

[Topic(Title = "My Topic")]
public partial class Topic : TopicBase
{
}

正如nvoigt所说,您正在尝试查找类的属性,但您应该使用方法的MemberInfo。

像这样:

MethodInfo methodInfo = typeof(Topic).GetMethod("OnInit", BindingFlags.NonPublic | BindingFlags.Instance);
var attribute = methodInfo.GetCustomAttribute(typeof(TopicAttribute));

相关内容

  • 没有找到相关文章