当参数的确切类型未知时创建委托
本文关键字:创建 未知 类型 参数 | 更新日期: 2023-09-27 18:33:30
我在为这个实例方法创建正确的委托时遇到了一些麻烦:
public T AddComponent<T>() where T : Component
{
....
}
我正在使用反射来获取特定的方法信息,并且在委托上,我收到错误绑定到目标方法
private delegate T AddComponent<out T>();
private static AddComponent<Component> AddC { get; set; }
public void Test()
{
var go = new GameObject();
var targetAddComponent =
typeof (GameObject).GetMethods().First(m => m.Name == "AddComponent" && m.GetParameters().Length == 0);
AddC = (AddComponent<Component>) Delegate.CreateDelegate(typeof (AddComponent<Component>), go, targetAddComponent, true);
....
}
你对我做错了什么有任何线索吗?
方法信息是方法 GameObject.AddComponent<T>
的方法信息,返回 T。委托,您非常混乱地命名为与方法相同的委托,必须是返回Component
的方法。 你做了什么使 T 等于分量? 无。
换句话说:方法信息是某种东西的方法信息,在构造之前实际上不是可调用的方法。它是制作方法的通用模式,而不是方法。如果要对其进行委托,请将其设置为方法。需要在方法中为类型参数 T 提供类型参数。