C#:如何使用委托在对象上查找函数并调用它

本文关键字:查找 函数 调用 对象 何使用 | 更新日期: 2023-09-27 18:34:25

我想要一个这样的函数:

Event.Call<Interface>(objectWithThatInterface, (x) => x.MethodOnObject);

因此,将在此对象上调用该方法。但我不知道该怎么做。也许与代表有关?

C#:如何使用委托在对象上查找函数并调用它

在我看来

,这是非常简单的实现:

public static class Event
{
    public static void Call<T>(T instance, Action<T> method) where T : Interface
    {
        method(instance);
    }
}

我故意避免进行任何错误检查以保持代码简单,但如果null任何一个参数,它可能会抛出空引用异常。

你可以尝试这样的事情:

实现事件类:

class Event
{
    public static void Call<TInstance>(TInstance instance, Action<TInstance> action)
        where TInstance : IInterface
    {
        // invoke your instance
        action(instance);
    }
}

实现具体类:

class ConcreteObject
    : IInterface
{
    public void MethodOnObject()
    {
         Console.WriteLine("Called MethodOnObject()");
    }
}

实现接口:

interface IInterface
{
    void MethodOnObject();
}

用法:

IInterface objectWithThatInterface = new ConcreteObject();
Event.Call<IInterface>(objectWithThatInterface, x => x.MethodOnObject());

希望对你有帮助