I realize the title needs to be read more than once for understanding ... :)
I implemented a custom attribute that i apply to methods in my classes. all methods i apply the attribute to have the same signature and thus i defined a delegate for them:
public delegate void TestMethod();
I have a struct that accepts that delegate as a parameter
struct TestMetaData
{
TestMethod method;
string testName;
}
Is it possible to get from reflection a method that has the custom attribute and pass it to the struct into the 'method' member ?
I know you can invoke it but i think reflection won't give me the actual method from my class that i can cast to the TestMethod delegate.
Once you have the MethodInfo via Reflection, you can use Delegate.CreateDelegate to turn it into a Delegate, and then use Reflection to set this directly to the property/field of your struct.
You can create a delegate that calls your reflected method at runtime using Invoke, or Delegate.CreateDelegate.
Example:
using System;
class Program
{
public delegate void TestMethod();
public class Test
{
public void MyMethod()
{
Console.WriteLine("Test");
}
}
static void Main(string[] args)
{
Test t = new Test();
Type test = t.GetType();
var reflectedMethod = test.GetMethod("MyMethod");
TestMethod method = (TestMethod)Delegate.CreateDelegate(typeof(TestMethod), t, reflectedMethod);
method();
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With