可能であれば、文字列に基づいてクラスが存在するかどうかを確認し、そのクラスが存在する場合はそのオブジェクトの新しいインスタンスを取得する方法を教えてください。
ここには、オブジェクトにメソッドがあるかどうかをチェックするこのメソッドがあります。
public static bool HasMethod(object objectToCheck, string methodName)
{
Type type = objectToCheck.GetType();
return type.GetMethod(methodName) != null;
}
その後、メソッドが取るパラメーターをどのように確認できますか?
これはすべて可能ですか?
答え
クラスを取得するには:
public T GetInstance<T>(string namespace, string type)
{
return (T)Activator.CreateInstance(Type.GetType(namespace + "." + type));
}
メソッドを取得するには:
public static bool HasMethod(object objectToCheck, string methodName)
{
Type type = objectToCheck.GetType();
return type.GetMethod(methodName) != null;
}
...
dynamic controller = GetInstance<dynamic>(controllerString);
if (HasMethod(controller, actionString))
{
controller.GetType().GetMethod(actionString);
}
パラメータを取得するには
MethodInfo mi = type.GetMethod(methodName);
if (mi != null)
{
ParameterInfo[] parameters = mi.GetParameters();
// The parameters array will contain a list of all parameters
// that the method takes along with their type and name:
foreach (ParameterInfo parameter in parameters)
{
string parameterName = parameter.Name;
Type parameterType = parameter.ParameterType;
}
}