![](/img/trans.png)
[英]How do I use dynamic parameters with autofac's RegisterGeneric() method?
[英]How do I delegate calling of dynamic method names and dynamic parameters
是否有可能盲目处理动态方法名称和动态参数?
我正在使用Unity和C#。 我希望将Gizmo的图形在从场景中移除(销毁)后保留一会儿,所以我想将图形责任动态传递给另一个对象。
例如,我希望能够做到这一点:
GizmoManager.RunThisMethod(Gizmos.DrawSphere (Vector3.zero, 1f));
GizmoManager.RunThisMethod(Gizmos.DrawWireMesh (myMesh));
如您所见,正在调用的方法和参数计数各不相同。 有没有一种方法可以实现我的目标,而无需为每种Gizmo类型编写非常复杂的包装器? (共有11个。)(目标:我还想添加自己的参数,以说明管理器应继续绘制小控件的时间,但这是可选的。)
我建议将通话转换为lambda。 这将使GizmoManager
可以根据需要多次调用它。
class GizmoManager
{
void RunThisMethod(Action a)
{
// To draw the Gizmo at some point
a();
}
// You can also pass other parameters before or after the lambda
void RunThisMethod(Action a, TimeSpan duration)
{
// ...
}
}
// Make the drawing actions lambdas
GizmoManager.RunThisMethod(() => Gizmos.DrawSphere(Vector3.zero, 1f));
GizmoManager.RunThisMethod(() => Gizmos.DrawWireMesh(myMesh));
// You could also draw multiple if needed:
GizmoManager.RunThisMethod(() => {
Gizmos.DrawSphere(Vector3.zero, 1f);
Gizmos.DrawWireMesh(myMesh);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.