English 中文(简体)
能否在组别内找到具有特定特性的方法?
原标题:Is it possible to scan for methods with specific attributes within assembly?

能否在议会中找到具有特定特性的方法? 我目前正在研究C++视觉项目,但甚至C#与我一道被罚款。 我需要找到目前所采用的所有方法,例如:[XYZ]。 任何想法?

最佳回答

我利用Microsoft Roslyn从事类似工作。 这应当非常容易。

让我知道,你们是否需要任何榜样。

http://blog.filipekberg.se/

反省也可以用于此目的,“GetCustomAttributes”方法将特定成员确定的所有属性归为后。

Alright, try this:

this.GetType().GetMethods() 

loop trough all the methods and GetCustomAttributes

这应该是这样。 遗憾的是,我没有在我的妻子手提电脑上安装视频演播室:

问题回答

引证。 它将搜查任何特定物体

        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);
        }
    }
}

Keep in mind this will load each and every assembly you use into the Application Domain, so it might be worth calling this code in its own AppDomain each time.

利用反思来寻找方法和 attributes取特性





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签