在托管环境中重新解释没有接口/装箱的struct-emulator

时间:2012-09-29 19:09:00

标签: c# .net types interface casting

我有一个类,用于模拟(不可派生的)结构并添加功能(事件)
它具有完全相同的公共接口,但是一些用于突变事件的自定义内部代码 我需要将所述类传递给一个函数,该函数需要我的类模拟的结构,但我需要避免装箱/拆箱,因为它太慢了。

如果模拟结构不在我的控制范围内,并且不是从界面派生的话,如何让所述函数接受我的类?我的类具有完全相同的公共函数/成员/语法。


具体示例:

XNA GraphicsDevice.DrawUserPrimitives函数要求提供IVertexType的数组。
看起来像浪费有时必须调用List.ToArray(),因此制作一个完整的副本,只是因为一个函数特别需要System.Array类型输入。 List具有与Array相同的语法和功能。如果该函数接受输入类,则不会有任何问题。

1 个答案:

答案 0 :(得分:1)

为什么你不能实现IVertexType并使用数组IVertexType []?如果有一个实现这个的结构,那么你可以通过包装结构并返回结构值来编写实现。