Хотелось бы узнать, допустим есть класс, который можно инициализировать как через конструктор, так и через оператор неявного преобразования:
internal class Sdl2Library : HObject<FreeLibraryDelegate>
{
private readonly Dictionary<string, Delegate> _cachedProcedures = new Dictionary<string, Delegate>();
private Sdl2Library(IntPtr hModule)
{
Handle = hModule;
Free = WinApi.FreeLibrary;
}
public Sdl2Library()
{
string loadedModulePath =
Path.Combine(
Path.GetDirectoryName(new Uri(typeof(Sdl2Library).Assembly.CodeBase).LocalPath) ??
throw new InvalidOperationException(), Environment.Is64BitProcess ? "x64" : "x86", "sdl.dll");
Handle = WinApi.LoadLibrary(loadedModulePath);
if (Handle == IntPtr.Zero)
{
throw new Win32Exception(Marshal.GetLastWin32Error());
}
Free = WinApi.FreeLibrary;
}
public static implicit operator IntPtr(Sdl2Library library)
{
return library.Handle;
}
public static implicit operator Sdl2Library(IntPtr ptr)
{
return new Sdl2Library(ptr);
}
protected override void Dispose(bool disposing)
{
Free(this);
base.Dispose(disposing);
}
}
Можно ли теперь делать примерно такое:
[DllImport("kernel32.dll", SetLastError = true)]
internal static extern Sdl2Library LoadLibrary(string modulePath);
Т.е. использовать тип как возвращаемый, на замену IntPtr
?
Могу ли я испытывать какие либо проблемы при таком раскладе?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Необходимо скачать файл с FTP после нажатия кнопки,но при этом возникает такое исключение
Пробовал так, но после запуска инстанса "C:\111\" продолжает быть пустойЯ хочу чтоб в этой папке сохранялись куки, кеш, расширения
При перемещении объекта с Rigidbody, начинает виснуть, тормозить, а когда сталкивается с другими объектами с Box colider то и вовсе не двигаетсяКак...