我創造了一些自定義funcs中,然後將它們添加到funcs中被稱爲運營商的名單,因爲這樣的:在用戶執行Func鍵代表定義的順序
...
Func<Vector3, Vector3> Move1MFunc = (v) => v.Z == 0 ? v.Add(1, 0, 1) : v.Subtract(1, 0, 1);
Func<Vector3, Vector3> Move2MFunc = (v) => v.Z == 0 ? v.Add(2, 0, 1) : v.Subtract(2, 0, 1);
protected List<Func<Vector3, Vector3>> Operators { get; set; }
...
在其他一些方法,我通過運營商列表迭代並執行每個代表:
protected IEnumerable<Vector3> GetChildrenStates(Vector3 parentState)
{
foreach (var op in Operators)
{
// Get a child using the current operator
var possibleChild = op(parentState);
...
現在,每個代表正在根據其在列表中的順序執行。我希望用戶能夠定義每個函數應該執行的順序(相互關係)。我將向用戶展示一些代表每個代表的代碼,並在代碼中將代碼鏈接到代表自己(?)。我正在使用MVVM。
我已經嘗試使用屬性,但從我發現的屬性不支持Funcs。
我似乎無法想到另一種解決方案,因此我問你。我只是剛開始使用Funcs,如果有人有任何改進意見,我會很樂意考慮它們。
根據功能顯示名稱的順序進行排序的功能,你可以創建一個'詞典<字符串,Func鍵<的Vector3,的Vector3 >>'你顯示的字符串映射到用戶每個功能。然後你循環選擇並查找來找到正確的函數來執行。 – Rob
我將如何存儲執行的*訂單*?第一個字典中的第一項要執行,第二個字典中的第二個要執行等等? – kskyriacou
對我來說,感覺就像是在問如何根據用戶的選擇來填充一個列表 - 這聽起來對我來說太寬泛了......但我可能錯過了一些東西。 –