Heim >Backend-Entwicklung >C++ >Wie rufe ich Methoden mit und ohne Parameter mithilfe von Reflection in C# dynamisch auf?

Wie rufe ich Methoden mit und ohne Parameter mithilfe von Reflection in C# dynamisch auf?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-18 02:41:12422Durchsuche

How to Dynamically Invoke Methods with and without Parameters using Reflection in C#?

Das folgende Codebeispiel zeigt, wie Methoden mit und ohne Parameter dynamisch aufgerufen werden:

<code class="language-csharp">// Assembly1.dll
namespace TestAssembly
{
    public class MainClass
    {
        public void Execute(string parameter)
        {
            // 执行某些操作...
        }

        public void ExecuteWithoutParameters()
        {
            // 执行某些操作...
        }
    }
}

// 执行程序集 ExecutingAssembly.exe
public class ReflectionExample
{
    public void InvokeMethod(string methodName)
    {
        Assembly assembly = Assembly.LoadFile("...Assembly1.dll"); // 加载程序集

        Type type = assembly.GetType("TestAssembly.MainClass"); // 获取类型
        if (type != null)
        {
            MethodInfo methodInfo = type.GetMethod(methodName); // 获取方法信息
            if (methodInfo != null)
            {
                object result = null;
                ParameterInfo[] parameters = methodInfo.GetParameters(); // 获取参数信息
                object instance = Activator.CreateInstance(type); // 创建实例

                if (parameters.Length == 0)
                {
                    result = methodInfo.Invoke(instance, null); // 调用无参数方法
                }
                else
                {
                    object[] parameterValues = new object[] { "Hello" }; // 参数值
                    result = methodInfo.Invoke(instance, parameterValues); // 调用带参数方法
                }
            }
        }
    }
}</code>

Das obige ist der detaillierte Inhalt vonWie rufe ich Methoden mit und ohne Parameter mithilfe von Reflection in C# dynamisch auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn