c# - 将对象数组传递给属性构造函数

标签 c# attributes custom-attributes

我有一个接受对象数组的自定义属性。我试图将一个对象数组传递给它,但收到编译器错误:

An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type.

代码如下:

[AttributeUsage(AttributeTargets.Class)]
public class MyAttribute : Attribute
{
    public MyAttribute(Person[] people)
    {
         People = people;
    }

    public Person[] People{get; private set;}
}

public class Person
{
    public string Name{get;set;}
    public string LastName{get;set;}
}

我在网上看到了一些文章,但还没有看到更接近我的文章。我做错了什么还是错误?如果不是错误,有人可以解释为什么我不能传递 Person 数组吗?我尝试了字符串数组,它工作正常。

最佳答案

这是因为 string 数组是编译时常量,而 Person 数组不是。这不是一个错误,这是一个限制。我发现最好的解决方法是使用反射在创建对象时设置 attributes 属性 - 但它并不漂亮。

关于c# - 将对象数组传递给属性构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18706091/

相关文章:

c# - IIS Express 路由在 Visual Studio 2019 中无法正常工作

c# - 在 C# 中是否有从 int 类型安全的枚举转换?

c# - 调试器未进入自定义属性类

python - 如何在Python中的语料库上使用 "collocation_list"函数?

c# - c#中的[Required]和[Required()]有什么区别

c# - 通过自定义属性生成附加代码

c# - 这是在方法和类上创建和使用自定义属性的正确方法吗?

c# - nHibernate HQL - 实体未映射

c# - JSQMessagesViewController 找不到 heightForCellTopLabelAtIndexPath

ruby - Chef 菜谱有问题