Здравствуйте, externus, Вы писали:
E>А что касается оптимального соотношения цена/качество, то у меня есть решение, наилучшим образом удовлетворяющее этому: я просто не буду показывать в .NET эти необязательные параметры функции, и пусть писатели пользуются System.String с его могучим Format
. Проблема только в том, что это подойдет для данного конкретного проекта, а он не единственный.
С другой стороны, зачем вообще давать прямой доступ к данным участвующим в unmanaged взаимодействии? Например:
[StructLayout(LayoutKind.Sequential)]
public struct KERNEL_CONTROL_BLOCK
{
[MarshalAs(UnmanagedType.I4)]
public int cbSize;
[MarshalAs(UnmanagedType.I4)]
public int dwVersion;
// ...тыр-пыр...
private IntPtr _kernelLog;
public void KernelLog(string service, int handle, int level, string msg, params object [] pars)
{
// выбрать тут подходящий тип делегата, получить его экземпляр и сделать вызов
}
};
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.