Skip to content

Class ObjectExtension ​

Namespace: Tool
Assembly: Tool.Net.dll

对object类进行升级

csharp
public static class ObjectExtension

Inheritance ​

object ← ObjectExtension

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 ​

代码由逆血提供支持

Properties ​

Dynamic ​

虚拟参数(备注:要引用 .dll 方可使用)

csharp
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static dynamic Dynamic { get; }

Property Value ​

dynamic

DynamicCount ​

获取当前包含的虚拟参数数量

csharp
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static int DynamicCount { get; }

Property Value ​

int

DynamicKeys ​

获取虚拟键值下面的所有名称

csharp
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static string[] DynamicKeys { get; }

Property Value ​

string[]

DynamicValues ​

获取虚拟键值下面的所有内容

csharp
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static dynamic[] DynamicValues { get; }

Property Value ​

dynamic[]

ProcessThreadCollection ​

获取当前进程中的所有线程

csharp
public static ProcessThreadCollection ProcessThreadCollection { get; }

Property Value ​

ProcessThreadCollection

Provider ​

提供用于获取注入对象的服务

csharp
public static IServiceProvider Provider { get; }

Property Value ​

IServiceProvider

Services ​

提供用于添加对象服务

csharp
public static IServiceCollection Services { get; }

Property Value ​

IServiceCollection

Static ​

全局公共对象 可以用于 存放任何对象 管理,存在拆箱装箱行为

csharp
public static GlobalObj Static { get; }

Property Value ​

GlobalObj

Thread ​

获取当前上下文正在运行的当前线程

csharp
public static Thread Thread { get; }

Property Value ​

Thread

Methods ​

Add(object[], object) ​

给数组加新的值

csharp
public static object[] Add(this object[] txt, object txt1)

Parameters ​

txt object[]

Object[]

txt1 object

新增的值

Returns ​

object[]

由于不能直接赋值,采取间接赋值方式

Add<T>(object, object, object) ​

给数组加新的值(适用于任何数组对象)

csharp
public static void Add<T>(this object obj, object _obj, object T_obj)

Parameters ​

obj object

Object[]源数组

_obj object

新数组(为空,但是必须大于原数组一个下标以上)

T_obj object

加入的新值

Type Parameters ​

T

数组原类型

BuildProvider() ​

创建用于获取服务对象

调用该函数,将会释放掉原本的服务

csharp
public static void BuildProvider()

Contains(object[], object) ​

查找该Object数组中是否存在该值。

csharp
public static bool Contains(this object[] txt, object txt1)

Parameters ​

txt object[]

Object[]

txt1 object

查找的字符

Returns ​

bool

方法存在或不存在

CopyEntity(object, object, params string[]) ​

将对象拷贝,值类型拷贝,引用类型赋值。

csharp
public static bool CopyEntity(this object obj, object origobj, params string[] keys)

Parameters ​

obj object

对象

origobj object

拷贝对象

keys string[]

拷贝参数,空,为全拷贝 支持赋值语法 ?=? 注意不支持'空格'

Returns ​

bool

DynamicAdd(string, object, bool) ​

添加虚拟参数(备注:如果对象名存在则会在直接修改原对象名内的数据,type字段默认为true,为false时则不进行修改),注明:如果存在多线程添加同一个键值的情况,请自己使用锁解决

csharp
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static void DynamicAdd(string key, object value, bool type = true)

Parameters ​

key string

value object

type bool

DynamicObjectkey(string) ​

获取指定键值的内容(备注:如果键值不存在则返回null)

csharp
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static object DynamicObjectkey(string key)

Parameters ​

key string

简直名称

Returns ​

object

返回结果

DynamicRemove() ​

删除全部虚拟参数

csharp
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static void DynamicRemove()

DynamicRemove(string) ​

删除指定名称的虚拟参数(备注:如果键值不存在则不会删除任何键值,不抛出异常)

csharp
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static void DynamicRemove(string key)

Parameters ​

key string

简直名称

Dynamickey(string) ​

获取指定键值的内容(备注:如果键值不存在则返回null)

csharp
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static dynamic Dynamickey(string key)

Parameters ​

key string

简直名称

Returns ​

dynamic

返回结果

Dynamickey<T>(string) ​

获取指定键值的内容(备注:如果键值不存在则返回null)

csharp
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static T Dynamickey<T>(string key)

Parameters ​

key string

简直名称

Returns ​

T

返回结果

Type Parameters ​

T

EntityToJson(object) ​

将实体转换为JSON格式字符串 (再三强调,要是实体,而且是单个实体。)

csharp
public static string EntityToJson(this object obj)

Parameters ​

obj object

实体

Returns ​

string

返回JSON字符串

EntityToJson(object, bool) ​

将实体转换为JSON格式字符串 (再三强调,要是实体,而且是单个实体。)

csharp
public static string EntityToJson(this object obj, bool IsDate)

Parameters ​

obj object

实体

IsDate bool

ToJson格式时间,启用转字符串

Returns ​

string

返回JSON字符串

EntityToJson(object, bool, string) ​

将实体转换为JSON格式字符串 (再三强调,要是实体,而且是单个实体。)

csharp
public static string EntityToJson(this object obj, bool IsDate, string ToDateString)

Parameters ​

obj object

实体

IsDate bool

ToJson格式时间,启用转字符串

ToDateString string

Date.ToString()的写法。

Returns ​

string

返回JSON字符串

GetArrayIndex(object[], int, int) ​

同于获取指定部分的内容

csharp
public static object[] GetArrayIndex(this object[] obj, int index, int count)

Parameters ​

obj object[]

对象数组

index int

从下标N开始

count int

到下标N结束

Returns ​

object[]

返回一部分的数组内容

GetIntPtr(object) ​

获取当前对象的内存空间

csharp
public static IntPtr GetIntPtr(this object obj)

Parameters ​

obj object

对象

Returns ​

IntPtr

返回指针

GetIntPtrInt(object) ​

获取当前对象的内存空间

csharp
public static int GetIntPtrInt(this object obj)

Parameters ​

obj object

对象

Returns ​

int

返回指针

IsNewTask(Task) ​

判断当前任务是否是使用了新线程完成,如果使用的是当前线程完成任务,将在返回前,启用新线程继续后续任务

csharp
public static Task IsNewTask(this Task task)

Parameters ​

task Task

需要完成的任务

Returns ​

Task

返回与原线程不一样的继续线程

IsNewTask(ValueTask) ​

判断当前任务是否是使用了新线程完成,如果使用的是当前线程完成任务,将在返回前,启用新线程继续后续任务

csharp
public static ValueTask IsNewTask(this ValueTask task)

Parameters ​

task ValueTask

需要完成的任务

Returns ​

ValueTask

返回与原线程不一样的继续线程

IsNewTask<TResult>(Task<TResult>) ​

判断当前任务是否是使用了新线程完成,如果使用的是当前线程完成任务,将在返回前,启用新线程继续后续任务

csharp
public static Task<TResult> IsNewTask<TResult>(this Task<TResult> task)

Parameters ​

task Task<TResult>

需要完成的任务

Returns ​

Task<TResult>

返回与原线程不一样的继续线程

Type Parameters ​

TResult

IsNewTask<TResult>(ValueTask<TResult>) ​

判断当前任务是否是使用了新线程完成,如果使用的是当前线程完成任务,将在返回前,启用新线程继续后续任务

csharp
public static ValueTask<TResult> IsNewTask<TResult>(this ValueTask<TResult> task)

Parameters ​

task ValueTask<TResult>

需要完成的任务

Returns ​

ValueTask<TResult>

返回与原线程不一样的继续线程

Type Parameters ​

TResult

IsPropertyExist(string) ​

判断当前虚拟对象下面是否有该参数

csharp
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static bool IsPropertyExist(string propertyname)

Parameters ​

propertyname string

参数名

Returns ​

bool

MapTo(ThreadStart) ​

实现单线程的访问 (示例:new ThreadStart(delegate (){}) )

csharp
public static object MapTo(ObjectExtension.ThreadStart API)

Parameters ​

API ObjectExtension.ThreadStart

Returns ​

object

MapTo(object, string, params object[]) ​

实现单线程的访问

csharp
public static object MapTo(object obj_T, string Methods, params object[] parameter)

Parameters ​

obj_T object

表示一个类对象实力

Methods string

表示调用的对象的一个方法名(注意该方法必须是非静态方法)

parameter object[]

该方法的参数,如果该方法没有参数可以为null,如有参数必须和方法参数一致

Returns ​

object

MapTo<T>(string) ​

获取某个类下面的方法,方法对应的委托参数

csharp
public static ActionDispatcher<T> MapTo<T>(string Methods)

Parameters ​

Methods string

表示调用的对象的方法名

Returns ​

ActionDispatcher<T>

Type Parameters ​

T

Read<T>(IntPtr) ​

将指定的内存空间内容转换成类型

csharp
public static T Read<T>(IntPtr address)

Parameters ​

address IntPtr

内存空间

Returns ​

T

返回类型对象

Type Parameters ​

T

类型对象

Read<T>(int) ​

将指定的内存空间内容转换成类型

csharp
public static T Read<T>(int address)

Parameters ​

address int

内存空间值

Returns ​

T

返回类型对象

Type Parameters ​

T

类型对象

Read<T>(object, object, int, int) ​

重写封装的Copy方法 (读取原数组中指定位置的内容)

csharp
public static int Read<T>(this object sourceArray, object destinationArray, int sourceIndex, int length)

Parameters ​

sourceArray object

源数组对象

destinationArray object

新数组对象

sourceIndex int

源数据开始读取的位置

length int

从源数组取多少?(是指从读取位置开始往后读的数量)

Returns ​

int

返回当前新的数组中复制了多少个下标的值

Type Parameters ​

T

Read<T>(object, int, object, int, int) ​

重写封装的Copy方法 (读取原数组中指定位置的内容)

csharp
public static int Read<T>(this object sourceArray, int sourceIndex, object destinationArray, int destinationIndex, int length)

Parameters ​

sourceArray object

源数组对象

sourceIndex int

源数据开始读取的位置

destinationArray object

新数组对象

destinationIndex int

开始存储的位置

length int

从源数组取多少?(是指从读取位置开始往后读的数量)

Returns ​

int

返回当前新的数组中复制了多少个下标的值

Type Parameters ​

T

RunTask(Func<Task>, TaskCreationOptions, CancellationToken) ​

原 StartNew 方法的封装·支持对异步模型的线程创建

csharp
public static Task RunTask(this Func<Task> task, TaskCreationOptions creationOptions = TaskCreationOptions.None, CancellationToken token = default)

Parameters ​

task Func<Task>

creationOptions TaskCreationOptions

token CancellationToken

Returns ​

Task

RunTask(Func<ValueTask>, TaskCreationOptions, CancellationToken) ​

原 StartNew 方法的封装·支持对异步模型的线程创建

csharp
public static ValueTask RunTask(this Func<ValueTask> task, TaskCreationOptions creationOptions = TaskCreationOptions.None, CancellationToken token = default)

Parameters ​

task Func<ValueTask>

creationOptions TaskCreationOptions

token CancellationToken

Returns ​

ValueTask

RunTask<T>(Func<Task<T>>, TaskCreationOptions, CancellationToken) ​

原 StartNew 方法的封装·支持对异步模型的线程创建

csharp
public static Task<T> RunTask<T>(this Func<Task<T>> task, TaskCreationOptions creationOptions = TaskCreationOptions.None, CancellationToken token = default)

Parameters ​

task Func<Task<T>>

creationOptions TaskCreationOptions

token CancellationToken

Returns ​

Task<T>

返回结果

Type Parameters ​

T

RunTask<T>(Func<ValueTask<T>>, TaskCreationOptions, CancellationToken) ​

原 StartNew 方法的封装·支持对异步模型的线程创建

csharp
public static ValueTask<T> RunTask<T>(this Func<ValueTask<T>> task, TaskCreationOptions creationOptions = TaskCreationOptions.None, CancellationToken token = default)

Parameters ​

task Func<ValueTask<T>>

creationOptions TaskCreationOptions

token CancellationToken

Returns ​

ValueTask<T>

返回结果

Type Parameters ​

T

ToBase64String(object) ​

将对象转换成Base64字符串(编码)

csharp
public static string ToBase64String(this object obj)

Parameters ​

obj object

Returns ​

string

ToBytes(object) ​

将一个object对象序列化,返回一个byte[](重要说明:被序列化的对象必须实现 [Serializable] 特性的结构)

csharp
[Obsolete("BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.", DiagnosticId = "SYSLIB0011", UrlFormat = "https://aka.ms/dotnet-warnings/{0}")]
public static byte[] ToBytes(this object obj)

Parameters ​

obj object

能序列化的对象

Returns ​

byte[]

返回一个byte[]

ToBytes(object, out Type) ​

将一个object对象序列化,返回一个byte[] (升级版,有效降低内存消耗)(重要说明:被序列化的对象必须实现 struct 标记)示例:public struct 类名称

csharp
public static byte[] ToBytes(this object obj, out Type type)

Parameters ​

obj object

能序列化的对象

type Type

转换为原来类的Type

Returns ​

byte[]

返回一个byte[]

ToJson(object) ​

转换为JSON格式字符串

csharp
public static string ToJson(this object obj)

Parameters ​

obj object

object

Returns ​

string

JSON字符串

ToJson(object, JsonSerializerOptions) ​

转换为JSON格式字符串

csharp
public static string ToJson(this object obj, JsonSerializerOptions jsonSerializerOptions)

Parameters ​

obj object

object

jsonSerializerOptions JsonSerializerOptions

需要的序列化条件

Returns ​

string

JSON字符串

ToJsonWeb(object) ​

转换为JSON格式字符串,针对Web场景定制Json格式

csharp
public static string ToJsonWeb(this object obj)

Parameters ​

obj object

object

Returns ​

string

JSON字符串

ToJsonWeb(object, Action<JsonSerializerOptions>) ​

转换为JSON格式字符串,针对Web场景定制Json格式

csharp
public static string ToJsonWeb(this object obj, Action<JsonSerializerOptions> action)

Parameters ​

obj object

object

action Action<JsonSerializerOptions>

委托Json任务

Returns ​

string

JSON字符串

ToTryVar<T>(object, T) ​

实现万能的转换(备注:包含数据类型的转换也包含as的功能和(类型)的功能)(T:适用于转换失败,无法转换时系统返回的默认结果,用于容错)

csharp
public static T ToTryVar<T>(this object obj, T devalue)

Parameters ​

obj object

object实体,参数,对象

devalue T

转换失败时使用默认值

Returns ​

T

返回被指定强转的类型。(异常:存在于强转无效)

Type Parameters ​

T

对象

ToVar<T>(object) ​

实现万能的转换(备注:包含数据类型的转换也包含as的功能和(类型)的功能)

csharp
public static T ToVar<T>(this object obj)

Parameters ​

obj object

object实体,参数,对象

Returns ​

T

返回被指定强转的类型。(异常:存在于强转无效)

Type Parameters ​

T

对象

ToVar(object, Type, bool) ​

实现万能的转换(备注:包含数据类型的转换也包含as的功能和(类型)的功能)

csharp
public static object ToVar(this object obj, Type type, bool istype = true)

Parameters ​

obj object

object实体,参数,对象

type Type

指定类型的

istype bool

表示强转失败时是否抛异常。返回null

Returns ​

object

返回被指定强转的类型。(异常:存在于强转无效)

ToVar(object, string) ​

实现万能的转换(备注:包含数据类型的转换也包含as的功能和(类型)的功能)

csharp
public static dynamic ToVar(this object obj, string type = null)

Parameters ​

obj object

object实体,参数,对象

type string

强转类型,如果为空,默认强转成该对象的Type类型(必须要是当前程序集下的对象,才能转换)

Returns ​

dynamic

返回被指定强转的类型。(异常:存在于强转无效)

ToXml(object) ​

转换为Xml格式字符串

csharp
public static string ToXml(this object obj)

Parameters ​

obj object

object

Returns ​

string

Xml字符串

基于Apache-2.0协议开源