Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以在程序集中扫描具有特定属性的方法?_C#_.net_C++ Cli - Fatal编程技术网

C# 是否可以在程序集中扫描具有特定属性的方法?

C# 是否可以在程序集中扫描具有特定属性的方法?,c#,.net,c++-cli,C#,.net,C++ Cli,是否可以在程序集中扫描具有特定属性的方法?我目前正在研究Visual C++项目,但即使C语言也很好。我需要在当前assmebly中找到所有应用了paricular属性的方法,例如[XYZ]。有什么想法吗?我用微软Roslyn做过类似的工作。这应该很容易 如果您需要任何示例代码,请告诉我 再看看这篇文章: 反射也可以用于此目的,GetCustomAttributes方法返回给定成员上定义的所有属性 好的,试试这个: this.GetType().GetMethods() 通过所有方法和get

是否可以在程序集中扫描具有特定属性的方法?我目前正在研究Visual C++项目,但即使C语言也很好。我需要在当前assmebly中找到所有应用了paricular属性的方法,例如
[XYZ]
。有什么想法吗?

我用微软Roslyn做过类似的工作。这应该很容易

如果您需要任何示例代码,请告诉我

再看看这篇文章:

反射也可以用于此目的,GetCustomAttributes方法返回给定成员上定义的所有属性

好的,试试这个:

this.GetType().GetMethods() 
通过所有方法和getCustomAttribute循环


应该是这样。不幸的是,我妻子的笔记本电脑上没有安装Visual Studio:)

试试这个。它将在任何对象中搜索特定属性

        MemberInfo[] members = obj.GetType().GetMethods();
        foreach (MemberInfo m in members)
        {
            if (m.MemberType == MemberTypes.Method)
            {
                MethodInfo p = m as MethodInfo;
                object[] attribs = p.GetCustomAttributes(false);
                foreach (object attr in attribs)
                {
                    XYZ v = attr as XYZ;
                    if (v != null)
                        DoSomething();
                }
            }
        }

使用反射获取方法并获取给定程序集路径的属性

static void FindAttributes(String^ assemblyPath)
{
    Assembly^ assembly = Assembly::ReflectionOnlyLoadFrom(assemblyPath);

    for each (Type^ typ in assembly->GetTypes())
    {
        for each (CustomAttributeData^ attr 
            in CustomAttributeData::GetCustomAttributes(typ))
        {
            Console::WriteLine( "{0}: {1}", typ, attr);
        }
    }
}

请记住,这会将您使用的每个程序集加载到应用程序域中,因此每次在其自己的AppDomain中调用此代码可能都是值得的。

您正在寻找C++/CLI代码来扫描.Net程序集以查找属性,对吗?您好,anima,是的。只要一些示例代码就可以了。我没有用罗斯林。我想使用反射。