Reflector로 private 함수 호출하기.

seung-jae hwang·2019년 5월 14일
0

C샵

목록 보기
13/17

namespace WindowsFormsClient
{
class clsTestCode
{

    private string mTestCode(string sVal)
    {

        return sVal + " : OK";
    }
}

}

/// 1. 길게
Assembly assembly = Assembly.LoadFrom("WindowsFormsClient.exe");
Type form = assembly.GetType("WindowsFormsClient.clsTestCode");
clsTestCode client = (clsTestCode)Activator.CreateInstance(form);
MethodInfo mth = form.GetMethod("mTestCode", BindingFlags.NonPublic | BindingFlags.Instance);
object objr = mth.Invoke(client, new object[] { "Call Private Methos " });

/// 2. 한줄
Assembly assembly2 = Assembly.LoadFrom("WindowsFormsClient.exe");
object objre = typeof(clsTestCode).GetMethod("mTestCode", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(Activator.CreateInstance(assembly2.GetType("WindowsFormsClient.clsTestCode")), new object[] { "Call Private Methos 2 " });

/// 3. 기존 함수
BaseForm bFrom = this;
MethodInfo mth = typeof(BaseForm).GetMethod("FpSpread_CellClick", BindingFlags.NonPublic | BindingFlags.Instance);

                FarPoint.Win.Spread.SpreadView sv = new FarPoint.Win.Spread.SpreadView(siSub.SpreadObject);
                CellClickEventArgs objcellclick = new CellClickEventArgs(sv, 0, 1, 0, 0, MouseButtons.Left, false, false);
                object objr = mth.Invoke(bFrom, new object[] { siSub.SpreadObject, objcellclick });

0개의 댓글