Dev*_*Dev 2 .net c# pinvoke properties conventions
我知道一个令人困惑的标题.让我解释.
我必须编组一个结构数组,然后将其转换为类数组(传统兼容性).例如
public class InnerClass {}
public class OuterClass { private InnerClass[] innerClasses; }
public struct InnerStruct {
// Data
}
private static buildInnerClass( InnerStruct i );
public struct OuterStruct {
private int _numInnerStructs;
private IntPtr _innerStructs;
// Other members
public InnerClass[] InnerClasses {
get {
InnerClass[] ret = new InnerClass[_numInnerStructs];
var structSize = Marshal.SizeOf(typeof(InnerStruct));
var ptr = _innerStructs;
for (int i = 0; i < _numInnerStructs; i++)
{
InnerStruct innerStruct = (InnerStruct)Marshal.PtrToStructure(
ptr, typeof(InnerStruct));
ret[i] = buildInnerClass(innerStruct);
ptr = (IntPtr)((int)ptr + structSize);
}
return ret;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在真空中观察,这种做法本质上没有任何错误.但是,你应该小心......
一般来说,请记住,属性应该以这样的方式编写,即消费者不应该有很多(如果有的话)缓存值而不是再次调用属性的理由.如果负责任的开发人员可以对您的财产采取这种做法,那么您就走在了正确的轨道上.
| 归档时间: |
|
| 查看次数: |
127 次 |
| 最近记录: |