Skip to content

Class ActionDispatcher<T, TResult>

Namespace: Tool.Utils.ActionDelegate
Assembly: Tool.Net.dll

根据 MethodInfo 对象,创建一个委托,实现方法调用,提高性能,支持各种返回值(TResult)

csharp
public class ActionDispatcher<T, TResult> : IActionDispatcher<T>, IActionDispatcher

Type Parameters

T

调用类

TResult

返回值

Inheritance

objectActionDispatcher<T, TResult>

Implements

IActionDispatcher<T>, IActionDispatcher

Inherited Members

object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()

Extension Methods

ObjectExtension.Add<T>(object, object, object), DispatcherCore.AsAction<T, TResult>(IActionDispatcher), DispatcherCore.AsAction<T, TResult>(IActionDispatcher<T>), ObjectExtension.CopyEntity(object, object, params string[]), ObjectExtension.EntityToJson(object), ObjectExtension.EntityToJson(object, bool), ObjectExtension.EntityToJson(object, bool, string), DictionaryExtension.GetDictionary(object), TypeExtension.GetFieldKey(object, string, out bool), TypeExtension.GetFieldKey<T>(object, string, out bool), TypeExtension.GetFieldKey(object, Type, string, out bool), ObjectExtension.GetIntPtr(object), ObjectExtension.GetIntPtrInt(object), TypeExtension.GetPropertieFind(object, string, bool), TypeExtension.GetProperties(object), TypeExtension.GetPropertyKey(object, string, out bool), TypeExtension.GetPropertyKey<T>(object, string, out bool), TypeExtension.GetPropertyKey(object, Type, string, out bool), TypeExtension.GetValue(object, PropertyDescriptor), TypeExtension.GetValue(object, string, bool), TypeExtension.GetValue(object, string), ObjectExtension.Read<T>(object, object, int, int), ObjectExtension.Read<T>(object, int, object, int, int), DictionaryExtension.SetDictionary(object, IDictionary<string, object>), TypeExtension.SetFieldKey(object, string, object), TypeExtension.SetFieldKey<T>(object, string, object), TypeExtension.SetFieldKey(object, Type, string, object), TypeExtension.SetPropertyKey(object, string, object), TypeExtension.SetPropertyKey<T>(object, string, object), TypeExtension.SetPropertyKey(object, Type, string, object), TypeExtension.SetValue(object, PropertyDescriptor, object), TypeExtension.SetValue(object, string, object, bool), TypeExtension.SetValue(object, string, object), ObjectExtension.ToBase64String(object), ObjectExtension.ToBytes(object), ObjectExtension.ToBytes(object, out Type), DictionaryExtension.ToDictionary(object), DictionaryExtension.ToDictionary<T>(object), DictionaryExtension.ToIDictionary(object), DictionaryExtension.ToIDictionary<T>(object), ObjectExtension.ToJson(object), ObjectExtension.ToJson(object, JsonSerializerOptions), ObjectExtension.ToJsonWeb(object), ObjectExtension.ToJsonWeb(object, Action<JsonSerializerOptions>), ObjectExtension.ToTryVar<T>(object, T), ObjectExtension.ToVar<T>(object), ObjectExtension.ToVar(object, Type, bool), ObjectExtension.ToVar(object, string), ObjectExtension.ToXml(object)

Remarks

代码由逆血提供支持

Constructors

ActionDispatcher(MethodInfo)

初始化对象

csharp
public ActionDispatcher(MethodInfo methodInfo)

Parameters

methodInfo MethodInfo

方法对象

ActionDispatcher(MethodInfo, Type)

初始化对象

csharp
public ActionDispatcher(MethodInfo methodInfo, Type classtype)

Parameters

methodInfo MethodInfo

方法对象

classtype Type

调用类类型(明确调用类)

Properties

IsStatic

是否是静态方法

csharp
public bool IsStatic { get; }

Property Value

bool

IsTask

是否是 异步函数?

csharp
public bool IsTask { get; }

Property Value

bool

IsVoid

是否无返回值

csharp
public bool IsVoid { get; }

Property Value

bool

Method

当前方法的执行信息

csharp
public MethodInfo Method { get; }

Property Value

MethodInfo

MethodEnum

方法的公开类型

csharp
public MethodFlags MethodEnum { get; }

Property Value

MethodFlags

Name

方法名称

csharp
public string Name { get; }

Property Value

string

Parameters

方法参数

csharp
public Parameter[] Parameters { get; }

Property Value

Parameter[]

ReturnType

调用接口的返回值

csharp
public Type ReturnType { get; }

Property Value

Type

Methods

Execute(T, params object[])

调用方法有返回值(注明:如调用的是静态方法,类参数可为 null)

csharp
public TResult Execute(T CallClass, params object[] parameters)

Parameters

CallClass T

调用方法的类

parameters object[]

参数

Returns

TResult

返回方法的返回值

ExecuteAsync(T, object[])

调用方法有返回值(注明:如调用的是静态方法,类参数可为 null)

csharp
public Task<TResult> ExecuteAsync(T CallClass, object[] parameters)

Parameters

CallClass T

调用方法的类

parameters object[]

参数

Returns

Task<TResult>

返回方法的返回值

Invoke(T, params object[])

可不区分是否有返回值的调用方法

csharp
public TResult Invoke(T CallClass, params object[] parameters)

Parameters

CallClass T

调用方法的类

parameters object[]

参数

Returns

TResult

返回方法的返回值

InvokeAsync(T, params object[])

可不区分是否有返回值的调用方法

csharp
public Task<TResult> InvokeAsync(T CallClass, params object[] parameters)

Parameters

CallClass T

调用方法的类

parameters object[]

参数

Returns

Task<TResult>

返回方法的返回值

ToString()

返回方法信息缩写

csharp
public override string ToString()

Returns

string

VoidExecute(T, params object[])

调用方法无返回值(注明:如调用的是静态方法,类参数可为 null)

csharp
public void VoidExecute(T CallClass, params object[] parameters)

Parameters

CallClass T

调用方法的类

parameters object[]

参数

VoidExecuteAsync(T, object[])

调用方法无返回值(注明:如调用的是静态方法,类参数可为 null)

csharp
public Task VoidExecuteAsync(T CallClass, object[] parameters)

Parameters

CallClass T

调用方法的类

parameters object[]

参数

Returns

Task

基于Apache-2.0协议开源