Skip to content

Class ObjectExtension

Namespace: Tool
Assembly: Tool.Net.dll

对object类进行升级

csharp
public static class ObjectExtension

Inheritance

objectObjectExtension

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协议开源