Delegate.CreateDelegate cant connect with correct overloaded function..

i want connect a custom event with two different classes.

public class MethodHaveClass()
{
     public static void ClickEventTest()
     {   Debug.Log("Clicked!!");
}

with

public class EventHaveClass()
{
     public delegate void CustomEvent();
     public event CustomEvent OnClicked;
}

and try this…

public class DoSthClass : EventHaveClass()
{
   public void Init()
  {
    Type methodClassType = Type.GetType("MethohHaveClass");
    MethodInfo m_Info = methodClassType.GetMethod("ClickEventTest");

    Type eventClassType = Type.GetType("EventHaveClass");
    EventInfo m_event = eventClassType.GetEvent("OnClicked");

    Delegate handler = Delegate.CreateDelegate(m_event.EventHandlerType, m_Info); // <- exception
    m_event.AddEventHandler(eventClassType, handler);
  }
}

then unity console says.
ArgumentException: method argument length mismatch
System.Delegate.CreateDelegate (System.Type type, System.Object firstArgument, System.Reflection.MethodInfo method, Boolean throwOnBindFailure) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/Delegate.cs:226)

whats wrong with this code?
i just try to use CreateDelegate(Type, MethodInfo) this type of overload method but unity try to connect
CreateDelegate(Type, Object, MethodInfo, Boolean) this type every time… even if i try to use CreateDelegate(Type, Object, MethodInfo, Boolean) type , unity shows same ArgumentException again…

anything wrong with this??
i tried over 3days but still no idea.
i hope your kindness.

For starters;

Funky spelling;

Type.GetType("MethohHaveClass");

Do you really need to do this through reflection?

just wrong typing here… my source isnt.

cause in my real code…
MethodHaveClass is create in runtime. so i cant confirm that class name before it was created.
so more specific Init() code like…

public class DoSthClass : EventHaveClass()
{
public void Init(string methodClassName, string methodName, string eventClassName string eventName)
{
Type methodClassType = Type.GetType(methodClassName);
MethodInfo m_Info = methodClassType.GetMethod(methodName);

Type eventClassType = Type.GetType(eventClassName);
EventInfo m_event = eventClassType.GetEvent(eventName);

Delegate handler = Delegate.CreateDelegate(m_event.EventHandlerType, m_Info); // <- exception
m_event.AddEventHandler(eventClassType, handler);
}
}

im try to make (C# - WinForm like) Style Editor UI System.
so new EditorWindow(“MethodHaveClass”) is going to make. then Controls (“EventHaveClass”) added on EditorWindow.
in this case. i think i need this reflection code… to use added controls…

You are creating a delegate without specifying a target. This would work for a static method. In newer version of .Net framework CreateDelegate supports instance method without specifying any target, but it is very possible that the mono version used by Unity does not support that.