public static class AddressHelper
{
private static object mutualObject;
private static ObjectReinterpreter reinterpreter;
static AddressHelper()
{
AddressHelper.mutualObject = new object();
AddressHelper.reinterpreter = new ObjectReinterpreter();
AddressHelper.reinterpreter.AsObject = new ObjectWrapper();
}
public static IntPtr GetAddress(object obj)
{
lock (AddressHelper.mutualObject)
{
AddressHelper.reinterpreter.AsObject.Object = obj;
IntPtr address = AddressHelper.reinterpreter.AsIntPtr.Value;
AddressHelper.reinterpreter.AsObject.Object = null;
return address;
}
}
public static T GetInstance<T>(IntPtr address)
{
lock (AddressHelper.mutualObject)
{
AddressHelper.reinterpreter.AsIntPtr.Value = address;
return (T)AddressHelper.reinterpreter.AsObject.Object;
}
}
// I bet you thought C# was type-safe.
[System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Explicit)]
private struct ObjectReinterpreter
{
[System.Runtime.InteropServices.FieldOffset(0)] public ObjectWrapper AsObject;
[System.Runtime.InteropServices.FieldOffset(0)] public IntPtrWrapper AsIntPtr;
}
private class ObjectWrapper
{
public object Object;
}
private class IntPtrWrapper
{
public IntPtr Value;
}
}
Kaydol:
Kayıt Yorumları (Atom)
evren pehlivan yazılım
evren pehlivan yazılım, evren pehlivan yazılım geliştirici
-
Letter Numerical Code Description Ç Ç Capital c-cedilla ç ç Lowercase c-cedilla Ğ Ğ Capital g-breve ğ ...
-
dataset adı dataSet1 olsun dataSet1.Tables["TabloAdı"].Rows[satırnumarası]["tablodakiSütunAdı"]; data table için de aynı...
-
@model WebTimeSheetManagement.Models.Registration @using CaptchaMvc.HtmlHelpers @{ ViewBag.Title = "CreateAdmin"; Layo...
Hiç yorum yok:
Yorum Gönder