C#:如何使用委托在对象上查找函数并调用它
本文关键字:查找 函数 调用 对象 何使用 | 更新日期: 2023-09-27 18:34:25
我想要一个这样的函数:
Event.Call<Interface>(objectWithThatInterface, (x) => x.MethodOnObject);
因此,将在此对象上调用该方法。但我不知道该怎么做。也许与代表有关?
在我看来
,这是非常简单的实现:
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());
希望对你有帮助