2012-09-29 18 views
0

我有一個的意思模擬(非可導)結構,並添加功能(事件)
它具有完全相同的公共接口的類,但有些自定義的內部代碼用於突變事件。
我需要將所述類傳遞給一個函數,該函數需要我的類模擬結構,但是我需要避免裝箱/取消裝箱,因爲它太慢了。解讀結構仿真器沒有接口/拳擊在託管環境中的

如果仿真的結構不在我的控制下,並且不從接口派生,我該如何獲得上述函數來接受我的類?我的課有完全相同的公共職能/成員/語法。


具體的例子:

的XNA GraphicsDevice.DrawUserPrimitives功能請求的IVertexType的陣列。
看起來像這樣的浪費有時必須調用List.ToArray(),從而使一個完整的副本,只是因爲一個函數特別需要一個System.Array類型的輸入。列表具有與數組相同的語法和功能。如果函數接受輸入類,那就沒有任何問題。

+2

在這裏,有一些神奇的仙塵。在你的代碼上添加代碼是實現你想要的唯一方法。 :) – jalf

+0

'List'和'Array'具有不同的(但相似的)語法和功能。 'DrawUserPrimitives'中數組的內部使用可能會利用塊副本,固定數組長度等。如果您想避免「List.ToArray」調用,也許應該更改自己的設計。 –

+0

@ChrisSinclair以及函數只需要一個數組,所以我不得不將頂點存儲爲一個數組。我將它作爲列表存儲,因爲數據是不穩定的,所以我能做些什麼? – Griffin

回答

1

爲什麼不能實現IVertexType並使用數組IVertexType []?如果有一個實現這個的結構體,那麼可以通過包裝結構體並返回結構體的值來編寫實現。

+0

我試圖改變myType []的行爲,而不是單個頂點的行爲。我試圖把它們包裝在一個從數組派生的類中,但函數不會接受它。 – Griffin