我需要两个属性类吗

问题描述 投票:0回答:1

假设我有一个像这样的

attribute

[AttributeUsage(AttributeTargets.All)]
public sealed class LearnAttribute: Attribute
{
    public string FailMessage;
}

是否可以以某种方式定义其目标,可选的目标(例如

FailMessage
ONLY适用于我将用来装饰它的
property level
,而
class
本身仅适用于
LearnAttribute 
等级? 或者我需要定义两个属性类吗?
例如我可以有这样的东西:

class


c# attributes custom-attributes
1个回答
0
投票
是否可以以某种方式定义其目标,使可选目标(例如
[Learn] public class Foo { [FailMessage] public string BuildingName { get; set; } public void Method1() { Console.WriteLine(nameof(Method1)); } }

)仅适用于我将用来装饰它的类的属性级别,而

FailMessage
本身仅适用于类级别?

不。您只能为属性类本身定义目标,因此在使用它时可以访问它对应的所有属性/字段。如果你真的愿意,你可以编写一个
Roslyn 分析器

它将完成所需的工作,但我认为这将是一个相当令人困惑的 API,所以我建议坚持使用具有 2 个不同属性的更惯用的方法。

© www.soinside.com 2019 - 2024. All rights reserved.