첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170
using System;
using System.Reflection;

#region 메소드 실행하기 - ExecuteMethod(instance, methodName, parameterTypeArray, parameterArray)

/// <summary>
/// 메소드 실행하기
/// </summary>
/// <param name="instance">인스턴스</param>
/// <param name="methodName">메소드명</param>
/// <param name="parameterTypeArray">매개 변수 타입 배열</param>
/// <param name="parameterArray">매개 변수 배열</param>
/// <returns>실행 결과</returns>
public object ExecuteMethod(object instance, string methodName, Type[] parameterTypeArray, params object[] parameterArray)
{
    if(parameterTypeArray == null && parameterArray.Length > 0)
    {
        return instance.GetType().GetMethod
        (
            methodName,
            BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static |
            BindingFlags.Instance | BindingFlags.IgnoreCase | BindingFlags.InvokeMethod
        ).Invoke(instance, parameterArray);
    }
    else
    {
        return instance.GetType().GetMethod
        (
            methodName,
            BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static |
            BindingFlags.Instance | BindingFlags.IgnoreCase | BindingFlags.InvokeMethod,
            null,
            parameterTypeArray,
            null
        ).Invoke(instance, parameterArray);
    }
}

#endregion
#region 메소드 실행하기 - ExecuteMethod(instance, methodName, parameterArray)

/// <summary>
/// 메소드 실행하기
/// </summary>
/// <param name="instance">인스턴스</param>
/// <param name="methodName">메소드명</param>
/// <param name="parameterArray">매개 변수 배열</param>
/// <returns>실행 결과</returns>
public object ExecuteMethod(object instance, string methodName, params object[] parameterArray)
{
    Type[] parameterTypeArray = null;

    if(parameterArray != null)
    {
        int parameterArrayLength = parameterArray.Length;

        parameterTypeArray = new Type[parameterArrayLength];

        for(int i = 0; i < parameterArrayLength; i++)
        {
            if(parameterArray[i] == null)
            {
                parameterTypeArray = null;

                break;
            }

            parameterTypeArray[i] = parameterArray[i].GetType();
        }
    }

    return ExecuteMethod(instance, methodName, parameterTypeArray, parameterArray);
}

#endregion
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요