Skip to content

Class TypeExtension

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

对Type进行升级

csharp
public static class TypeExtension

Inheritance

objectTypeExtension

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), 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

代码由逆血提供支持

Methods

DefaultForType(Type)

获取当前类型的默认值

csharp
public static object DefaultForType(this Type type)

Parameters

type Type

Returns

object

GetFieldKey(object, string, out bool)

获取指定变量值 (支持 public/private/protected) 静态时obj为null

csharp
public static object GetFieldKey(this object obj, string name, out bool isexist)

Parameters

obj object

对象源

name string

变量名称

isexist bool

是否可以获取

Returns

object

返回变量值

GetFieldKey<T>(object, string, out bool)

获取指定变量值 (支持 public/private/protected) 静态时obj为null

csharp
public static object GetFieldKey<T>(this object obj, string name, out bool isexist)

Parameters

obj object

对象源

name string

变量名称

isexist bool

是否可以获取

Returns

object

返回变量值

Type Parameters

T

GetFieldKey(object, Type, string, out bool)

获取指定变量值 (支持 public/private/protected) 静态时obj为null

csharp
public static object GetFieldKey(this object obj, Type type, string name, out bool isexist)

Parameters

obj object

对象源

type Type

类型

name string

变量名称

isexist bool

是否可以获取

Returns

object

返回变量值

GetPropertieFind(object, string, bool)

获取当前对象下指定名称的属性对象

csharp
public static PropertyDescriptor GetPropertieFind(this object obj, string name, bool ignoreCase = false)

Parameters

obj object

对象源

name string

属性名称

ignoreCase bool

是否忽略大小写

Returns

PropertyDescriptor

GetProperties(object)

获取当前对象下所有属性集合

csharp
public static PropertyDescriptorCollection GetProperties(this object obj)

Parameters

obj object

对象源

Returns

PropertyDescriptorCollection

属性集合

GetProperties(Type)

获取当前对象下所有属性集合

csharp
public static PropertyDescriptorCollection GetProperties(Type componentType)

Parameters

componentType Type

对象源类型

Returns

PropertyDescriptorCollection

属性集合

GetPropertyKey(object, string, out bool)

获取指定变量值 (支持 public/private/protected) 静态时obj为null

csharp
public static object GetPropertyKey(this object obj, string name, out bool isexist)

Parameters

obj object

对象源

name string

变量名称

isexist bool

是否可以获取

Returns

object

返回变量值

GetPropertyKey<T>(object, string, out bool)

获取指定变量值 (支持 public/private/protected) 静态时obj为null

csharp
public static object GetPropertyKey<T>(this object obj, string name, out bool isexist)

Parameters

obj object

对象源

name string

变量名称

isexist bool

是否可以获取

Returns

object

返回变量值

Type Parameters

T

GetPropertyKey(object, Type, string, out bool)

获取指定变量值 (支持 public/private/protected) 静态时obj为null

csharp
public static object GetPropertyKey(this object obj, Type type, string name, out bool isexist)

Parameters

obj object

对象源

type Type

类型

name string

变量名称

isexist bool

是否可以获取

Returns

object

返回变量值

GetPropertys(Type)

获取公共管理的属性构造器

csharp
public static TypePropertyDescriptor GetPropertys(this Type type)

Parameters

type Type

类型

Returns

TypePropertyDescriptor

属性构造器

GetValue(object, PropertyDescriptor)

根据属性对象获取属性的值

csharp
public static object GetValue(this object obj, PropertyDescriptor descriptor)

Parameters

obj object

对象源

descriptor PropertyDescriptor

属性对象

Returns

object

属性值

GetValue(object, string, bool)

获取指定属性值

csharp
public static object GetValue(this object obj, string name, bool ignoreCase)

Parameters

obj object

对象源

name string

属性名称

ignoreCase bool

是否忽略大小写

Returns

object

返回属性值

GetValue(object, string)

获取指定属性值(新模式)获取不到时 会抛出异常

csharp
public static object GetValue(this object obj, string name)

Parameters

obj object

对象源

name string

属性名称

Returns

object

返回属性值

Exceptions

Exception

字段不存在时会报错!

InvokeAsync(Action)

创建异步返回模式

csharp
public static Task InvokeAsync(this Action @delegate)

Parameters

delegate Action

Returns

Task

InvokeAsync<T1>(Action<T1>, T1)

创建异步模式

csharp
public static Task InvokeAsync<T1>(this Action<T1> @delegate, T1 arg1)

Parameters

delegate Action<T1>

arg1 T1

Returns

Task

Type Parameters

T1

InvokeAsync<T1, T2>(Action<T1, T2>, T1, T2)

创建异步模式

csharp
public static Task InvokeAsync<T1, T2>(this Action<T1, T2> @delegate, T1 arg1, T2 arg2)

Parameters

delegate Action<T1, T2>

arg1 T1

arg2 T2

Returns

Task

Type Parameters

T1

T2

InvokeAsync<T1, T2, T3>(Action<T1, T2, T3>, T1, T2, T3)

创建异步模式

csharp
public static Task InvokeAsync<T1, T2, T3>(this Action<T1, T2, T3> @delegate, T1 arg1, T2 arg2, T3 arg3)

Parameters

delegate Action<T1, T2, T3>

arg1 T1

arg2 T2

arg3 T3

Returns

Task

Type Parameters

T1

T2

T3

InvokeAsync<T1, T2, T3, T4>(Action<T1, T2, T3, T4>, T1, T2, T3, T4)

创建异步模式

csharp
public static Task InvokeAsync<T1, T2, T3, T4>(this Action<T1, T2, T3, T4> @delegate, T1 arg1, T2 arg2, T3 arg3, T4 arg4)

Parameters

delegate Action<T1, T2, T3, T4>

arg1 T1

arg2 T2

arg3 T3

arg4 T4

Returns

Task

Type Parameters

T1

T2

T3

T4

InvokeAsync<T1, T2, T3, T4, T5>(Action<T1, T2, T3, T4, T5>, T1, T2, T3, T4, T5)

创建异步模式

csharp
public static Task InvokeAsync<T1, T2, T3, T4, T5>(this Action<T1, T2, T3, T4, T5> @delegate, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)

Parameters

delegate Action<T1, T2, T3, T4, T5>

arg1 T1

arg2 T2

arg3 T3

arg4 T4

arg5 T5

Returns

Task

Type Parameters

T1

T2

T3

T4

T5

InvokeAsync<T1, T2, T3, T4, T5, T6>(Action<T1, T2, T3, T4, T5, T6>, T1, T2, T3, T4, T5, T6)

创建异步模式

csharp
public static Task InvokeAsync<T1, T2, T3, T4, T5, T6>(this Action<T1, T2, T3, T4, T5, T6> @delegate, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)

Parameters

delegate Action<T1, T2, T3, T4, T5, T6>

arg1 T1

arg2 T2

arg3 T3

arg4 T4

arg5 T5

arg6 T6

Returns

Task

Type Parameters

T1

T2

T3

T4

T5

T6

InvokeAsync<T1, T2, T3, T4, T5, T6, T7>(Action<T1, T2, T3, T4, T5, T6, T7>, T1, T2, T3, T4, T5, T6, T7)

创建异步模式

csharp
public static Task InvokeAsync<T1, T2, T3, T4, T5, T6, T7>(this Action<T1, T2, T3, T4, T5, T6, T7> @delegate, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)

Parameters

delegate Action<T1, T2, T3, T4, T5, T6, T7>

arg1 T1

arg2 T2

arg3 T3

arg4 T4

arg5 T5

arg6 T6

arg7 T7

Returns

Task

Type Parameters

T1

T2

T3

T4

T5

T6

T7

InvokeAsync<T1, T2, T3, T4, T5, T6, T7, T8>(Action<T1, T2, T3, T4, T5, T6, T7, T8>, T1, T2, T3, T4, T5, T6, T7, T8)

创建异步模式

csharp
public static Task InvokeAsync<T1, T2, T3, T4, T5, T6, T7, T8>(this Action<T1, T2, T3, T4, T5, T6, T7, T8> @delegate, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8)

Parameters

delegate Action<T1, T2, T3, T4, T5, T6, T7, T8>

arg1 T1

arg2 T2

arg3 T3

arg4 T4

arg5 T5

arg6 T6

arg7 T7

arg8 T8

Returns

Task

Type Parameters

T1

T2

T3

T4

T5

T6

T7

T8

InvokeAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9>(Action<T1, T2, T3, T4, T5, T6, T7, T8, T9>, T1, T2, T3, T4, T5, T6, T7, T8, T9)

创建异步模式

csharp
public static Task InvokeAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9>(this Action<T1, T2, T3, T4, T5, T6, T7, T8, T9> @delegate, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9)

Parameters

delegate Action<T1, T2, T3, T4, T5, T6, T7, T8, T9>

arg1 T1

arg2 T2

arg3 T3

arg4 T4

arg5 T5

arg6 T6

arg7 T7

arg8 T8

arg9 T9

Returns

Task

Type Parameters

T1

T2

T3

T4

T5

T6

T7

T8

T9

InvokeAsync<TResult>(Func<TResult>)

创建异步返回模式

csharp
public static Task<TResult> InvokeAsync<TResult>(this Func<TResult> @delegate)

Parameters

delegate Func<TResult>

Returns

Task<TResult>

Type Parameters

TResult

InvokeAsync<T1, TResult>(Func<T1, TResult>, T1)

创建异步返回模式

csharp
public static Task<TResult> InvokeAsync<T1, TResult>(this Func<T1, TResult> @delegate, T1 arg1)

Parameters

delegate Func<T1, TResult>

arg1 T1

Returns

Task<TResult>

Type Parameters

T1

TResult

InvokeAsync<T1, T2, TResult>(Func<T1, T2, TResult>, T1, T2)

创建异步返回模式

csharp
public static Task<TResult> InvokeAsync<T1, T2, TResult>(this Func<T1, T2, TResult> @delegate, T1 arg1, T2 arg2)

Parameters

delegate Func<T1, T2, TResult>

arg1 T1

arg2 T2

Returns

Task<TResult>

Type Parameters

T1

T2

TResult

InvokeAsync<T1, T2, T3, TResult>(Func<T1, T2, T3, TResult>, T1, T2, T3)

创建异步返回模式

csharp
public static Task<TResult> InvokeAsync<T1, T2, T3, TResult>(this Func<T1, T2, T3, TResult> @delegate, T1 arg1, T2 arg2, T3 arg3)

Parameters

delegate Func<T1, T2, T3, TResult>

arg1 T1

arg2 T2

arg3 T3

Returns

Task<TResult>

Type Parameters

T1

T2

T3

TResult

InvokeAsync<T1, T2, T3, T4, TResult>(Func<T1, T2, T3, T4, TResult>, T1, T2, T3, T4)

创建异步返回模式

csharp
public static Task<TResult> InvokeAsync<T1, T2, T3, T4, TResult>(this Func<T1, T2, T3, T4, TResult> @delegate, T1 arg1, T2 arg2, T3 arg3, T4 arg4)

Parameters

delegate Func<T1, T2, T3, T4, TResult>

arg1 T1

arg2 T2

arg3 T3

arg4 T4

Returns

Task<TResult>

Type Parameters

T1

T2

T3

T4

TResult

InvokeAsync<T1, T2, T3, T4, T5, TResult>(Func<T1, T2, T3, T4, T5, TResult>, T1, T2, T3, T4, T5)

创建异步返回模式

csharp
public static Task<TResult> InvokeAsync<T1, T2, T3, T4, T5, TResult>(this Func<T1, T2, T3, T4, T5, TResult> @delegate, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)

Parameters

delegate Func<T1, T2, T3, T4, T5, TResult>

arg1 T1

arg2 T2

arg3 T3

arg4 T4

arg5 T5

Returns

Task<TResult>

Type Parameters

T1

T2

T3

T4

T5

TResult

InvokeAsync<T1, T2, T3, T4, T5, T6, TResult>(Func<T1, T2, T3, T4, T5, T6, TResult>, T1, T2, T3, T4, T5, T6)

创建异步返回模式

csharp
public static Task<TResult> InvokeAsync<T1, T2, T3, T4, T5, T6, TResult>(this Func<T1, T2, T3, T4, T5, T6, TResult> @delegate, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)

Parameters

delegate Func<T1, T2, T3, T4, T5, T6, TResult>

arg1 T1

arg2 T2

arg3 T3

arg4 T4

arg5 T5

arg6 T6

Returns

Task<TResult>

Type Parameters

T1

T2

T3

T4

T5

T6

TResult

InvokeAsync<T1, T2, T3, T4, T5, T6, T7, TResult>(Func<T1, T2, T3, T4, T5, T6, T7, TResult>, T1, T2, T3, T4, T5, T6, T7)

创建异步返回模式

csharp
public static Task<TResult> InvokeAsync<T1, T2, T3, T4, T5, T6, T7, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, TResult> @delegate, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)

Parameters

delegate Func<T1, T2, T3, T4, T5, T6, T7, TResult>

arg1 T1

arg2 T2

arg3 T3

arg4 T4

arg5 T5

arg6 T6

arg7 T7

Returns

Task<TResult>

Type Parameters

T1

T2

T3

T4

T5

T6

T7

TResult

InvokeAsync<T1, T2, T3, T4, T5, T6, T7, T8, TResult>(Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult>, T1, T2, T3, T4, T5, T6, T7, T8)

创建异步返回模式

csharp
public static Task<TResult> InvokeAsync<T1, T2, T3, T4, T5, T6, T7, T8, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> @delegate, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8)

Parameters

delegate Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult>

arg1 T1

arg2 T2

arg3 T3

arg4 T4

arg5 T5

arg6 T6

arg7 T7

arg8 T8

Returns

Task<TResult>

Type Parameters

T1

T2

T3

T4

T5

T6

T7

T8

TResult

InvokeAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>(Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>, T1, T2, T3, T4, T5, T6, T7, T8, T9)

创建异步返回模式

csharp
public static Task<TResult> InvokeAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> @delegate, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9)

Parameters

delegate Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>

arg1 T1

arg2 T2

arg3 T3

arg4 T4

arg5 T5

arg6 T6

arg7 T7

arg8 T8

arg9 T9

Returns

Task<TResult>

Type Parameters

T1

T2

T3

T4

T5

T6

T7

T8

T9

TResult

IsDictionary(Type)

判断是否是字典类型

csharp
public static bool IsDictionary(this Type type)

Parameters

type Type

类型

Returns

bool

IsNumber(Type)

验证是否是数字类型

csharp
public static bool IsNumber(this Type type)

Parameters

type Type

Returns

bool

IsString(Type)

验证是否是字符类型

csharp
public static bool IsString(this Type type)

Parameters

type Type

Returns

bool

IsType(Type)

验证是否是系统变量

csharp
public static bool IsType(this Type type)

Parameters

type Type

Returns

bool

SetFieldKey(object, string, object)

修改指定变量值 (支持 public/private/protected) 静态时obj为null

csharp
public static bool SetFieldKey(this object obj, string name, object value)

Parameters

obj object

对象源

name string

变量名称

value object

修改的值

Returns

bool

返回是否查找到并进行修改

SetFieldKey<T>(object, string, object)

修改指定变量值 (支持 public/private/protected) 静态时obj为null

csharp
public static bool SetFieldKey<T>(this object obj, string name, object value)

Parameters

obj object

对象源

name string

变量名称

value object

修改的值

Returns

bool

返回是否查找到并进行修改

Type Parameters

T

SetFieldKey(object, Type, string, object)

修改指定变量值 (支持 public/private/protected) 静态时obj为null

csharp
public static bool SetFieldKey(this object obj, Type type, string name, object value)

Parameters

obj object

对象源

type Type

类型

name string

变量名称

value object

修改的值

Returns

bool

返回是否查找到并进行修改

SetPropertyKey(object, string, object)

修改指定变量值 (支持 public/private/protected) 静态时obj为null

csharp
public static bool SetPropertyKey(this object obj, string name, object value)

Parameters

obj object

对象源

name string

变量名称

value object

修改的值

Returns

bool

返回是否查找到并进行修改

SetPropertyKey<T>(object, string, object)

修改指定变量值 (支持 public/private/protected) 静态时obj为null

csharp
public static bool SetPropertyKey<T>(this object obj, string name, object value)

Parameters

obj object

对象源

name string

变量名称

value object

修改的值

Returns

bool

返回是否查找到并进行修改

Type Parameters

T

SetPropertyKey(object, Type, string, object)

修改指定变量值 (支持 public/private/protected) 静态时obj为null

csharp
public static bool SetPropertyKey(this object obj, Type type, string name, object value)

Parameters

obj object

对象源

type Type

类型

name string

变量名称

value object

修改的值

Returns

bool

返回是否查找到并进行修改

SetValue(object, PropertyDescriptor, object)

根据属性对象修改属性的值

csharp
public static void SetValue(this object obj, PropertyDescriptor descriptor, object value)

Parameters

obj object

对象源

descriptor PropertyDescriptor

属性对象

value object

修改属性的值

SetValue(object, string, object, bool)

修改指定属性值

csharp
public static bool SetValue(this object obj, string name, object value, bool ignoreCase)

Parameters

obj object

对象源

name string

属性名称

value object

修改的值

ignoreCase bool

是否忽略大小写

Returns

bool

返回是否查找到并进行修改

SetValue(object, string, object)

修改指定属性值(新模式)

csharp
public static bool SetValue(this object obj, string name, object value)

Parameters

obj object

对象源

name string

属性名称

value object

修改的值

Returns

bool

返回是否查找到并进行修改

基于Apache-2.0协议开源