[英]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.