【发布时间】:2010-09-16 06:36:45
【问题描述】:
我需要关于为非托管 C++ DLL 编写托管 (C#) 包装器的意见。
假设我有一个这样的对象:
public class ManagedObject
{
public void DoSomethingWithTheObject()
{
}
}
并假设 DoSomethingWithTheObject() 方法必须调用非托管 DLL 方法。
现在我想到了两种可接受的可能性:
public void DoSomethingWithTheObject()
{
DllWrapperClass.DirectCallToUnmanagedMethod(some_value_type);
}
和
public void DoSomethingWithTheObject()
{
DllWrapperClass.MethodName(this);
}
我基本上要问的是如果
包装类应该只是非托管方法的包装,所有对象都直接调用这些方法
包装类应该与对象巧妙地集成在一起,并尽可能多地隐藏“非托管方式”的工作方式
我倾向于第二个选项,但我想听听其他意见,因为这两种方式各有利弊。
【问题讨论】:
标签: c# pinvoke wrapper dllimport