如何在C#中使用反射获取方法的所有属性和属性数据

恩比拉尔

最终目标是将属性“按原样”从一个方法复制到生成的类中的另一个方法。

public class MyOriginalClass
{
    [Attribute1]
    [Attribute2("value of attribute 2")]
    void MyMethod(){}
}

public class MyGeneratedClass
{
    [Attribute1]
    [Attribute2("value of attribute 2")]
    void MyGeneratedMethod(){}
}

我可以使用列出方法的属性MethodInfo.GetCustomAttributes(),但这不会给我属性参数。我需要在生成的类上生成相应的属性。

请注意,我不知道属性的类型(无法转换属性)。

我正在使用CodeDom生成代码。

恩比拉尔

MethodInfo.GetCustomAttributesData()具有所需的信息:

// method is the MethodInfo reference
// member is CodeMemberMethod (CodeDom) used to generate the output method; 
foreach (CustomAttributeData attributeData in method.GetCustomAttributesData())
{
    var arguments = new List<CodeAttributeArgument>();
    foreach (var argument in attributeData.ConstructorArguments)
    {
        arguments.Add(new CodeAttributeArgument(new CodeSnippetExpression(argument.ToString())));
    }

    if (attributeData.NamedArguments != null)
        foreach (var argument in attributeData.NamedArguments)
        {
            arguments.Add(new CodeAttributeArgument(new CodeSnippetExpression(argument.ToString())));
        }

    member.CustomAttributes.Add(new CodeAttributeDeclaration(new CodeTypeReference(attributeData.AttributeType), arguments.ToArray()));
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C#中使用反射从类型和设置属性值中按名称获取属性

来自分类Dev

如何在C#中使用反射获取Json属性名称

来自分类Dev

使用beautifulsoup获取多个标签和属性数据

来自分类Dev

如何在WinRT中使用反射获取类的静态属性

来自分类Dev

如何在C#中通过反射获取属性值

来自分类Dev

使用带有C#的XmlDocument读取XML数据-读取属性数据并拆分结果

来自分类Dev

WP All Export for Wordpress:如何使用if,elseif条件获取和更改属性数据

来自分类Dev

如何在Scala中使用反射获取所有对象值和子对象值?

来自分类Dev

如何在Scala中使用反射获取所有对象值和子对象值?

来自分类Dev

如何在 C# 中使用 XPathEvaluate 方法通过 Xpath 获取节点元素属性的值?

来自分类Dev

如何在C#中使用反射获取从方法调用的方法列表

来自分类Dev

如何在C#中使用属性

来自分类Dev

在C#中使用自定义属性获取所有方法永远找不到方法

来自分类Dev

如何使用 C# 反射获取实例化的属性或非 null 的类类型的属性

来自分类Dev

如何复制GoodData表报表中所有行的属性数据?

来自分类Dev

使用反射获取 T obj 中的所有 DateTime 和 Nullable<DateTime> 属性

来自分类Dev

如何在django模型中使用外键获取对象的所有属性

来自分类Dev

如何在不使用C#中使用反射的情况下从该方法内部获取方法名称

来自分类Dev

使用jQuery获取我自己的属性数据

来自分类Dev

如何在Perl中顺序打印XML Tag的属性数据和标签值?

来自分类Dev

如何在Perl中顺序打印XML Tag的属性数据和标签值?

来自分类Dev

通过反射获取所有ICollection属性

来自分类Dev

在C#中获取属性值(反射)的最快方法

来自分类Dev

使用WooCommerce API检索产品属性数据和值

来自分类Dev

使用实体框架时如何在模型中写入属性数据库优先

来自分类Dev

使用实体框架时如何在模型中写入属性数据库优先

来自分类Dev

如何在XSockets中使用C#客户端API获取/设置属性

来自分类Dev

如何在C#中使用对象ID属性获取对象值

来自分类Dev

如何在C#中使用对象ID属性获取对象值

Related 相关文章

  1. 1

    如何在C#中使用反射从类型和设置属性值中按名称获取属性

  2. 2

    如何在C#中使用反射获取Json属性名称

  3. 3

    使用beautifulsoup获取多个标签和属性数据

  4. 4

    如何在WinRT中使用反射获取类的静态属性

  5. 5

    如何在C#中通过反射获取属性值

  6. 6

    使用带有C#的XmlDocument读取XML数据-读取属性数据并拆分结果

  7. 7

    WP All Export for Wordpress:如何使用if,elseif条件获取和更改属性数据

  8. 8

    如何在Scala中使用反射获取所有对象值和子对象值?

  9. 9

    如何在Scala中使用反射获取所有对象值和子对象值?

  10. 10

    如何在 C# 中使用 XPathEvaluate 方法通过 Xpath 获取节点元素属性的值?

  11. 11

    如何在C#中使用反射获取从方法调用的方法列表

  12. 12

    如何在C#中使用属性

  13. 13

    在C#中使用自定义属性获取所有方法永远找不到方法

  14. 14

    如何使用 C# 反射获取实例化的属性或非 null 的类类型的属性

  15. 15

    如何复制GoodData表报表中所有行的属性数据?

  16. 16

    使用反射获取 T obj 中的所有 DateTime 和 Nullable<DateTime> 属性

  17. 17

    如何在django模型中使用外键获取对象的所有属性

  18. 18

    如何在不使用C#中使用反射的情况下从该方法内部获取方法名称

  19. 19

    使用jQuery获取我自己的属性数据

  20. 20

    如何在Perl中顺序打印XML Tag的属性数据和标签值?

  21. 21

    如何在Perl中顺序打印XML Tag的属性数据和标签值?

  22. 22

    通过反射获取所有ICollection属性

  23. 23

    在C#中获取属性值(反射)的最快方法

  24. 24

    使用WooCommerce API检索产品属性数据和值

  25. 25

    使用实体框架时如何在模型中写入属性数据库优先

  26. 26

    使用实体框架时如何在模型中写入属性数据库优先

  27. 27

    如何在XSockets中使用C#客户端API获取/设置属性

  28. 28

    如何在C#中使用对象ID属性获取对象值

  29. 29

    如何在C#中使用对象ID属性获取对象值

热门标签

归档