Generic Delegate with the type provided on invoke or function add
<p>What I am going after is to be able to do something like this</p>

<pre><code>public class Class1
{
    public delegate CollsionType ValidateDelegate&lt; T &gt;(PlayerState&lt;T&gt; state, Vector2 position, CollsionType boundary);

    public static ValidateDelegate ValidateMove;

    public void AnotherFunction&lt; T &gt;(PlayerState&lt; T &gt; state)
    {
         //option1
         ValidateDelegate.Invoke&lt;T&gt;(state,SomeParameter,SomeParamter2)
    }
}

public class Class2&lt;TypeIWant&gt;
{
    public void SomeFunction
    {
        //option2
        Class1.ValidateMove = new ValidateDelegate&lt;TypeIWant&gt;(functionThatHasCorrectSigniture)
    }
}
</code></pre>

<p>The trick here is I do not know the type T when the delegate is created in Class1. I only know T when a function is added to the delegate or when the delegate is invoked. </p>
