Class ObjectExtension
Namespace: Tool
Assembly: Tool.Net.dll
对object类进行升级
public static class ObjectExtensionInheritance
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 方可使用)
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static dynamic Dynamic { get; }Property Value
dynamic
DynamicCount
获取当前包含的虚拟参数数量
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static int DynamicCount { get; }Property Value
DynamicKeys
获取虚拟键值下面的所有名称
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static string[] DynamicKeys { get; }Property Value
string[]
DynamicValues
获取虚拟键值下面的所有内容
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static dynamic[] DynamicValues { get; }Property Value
dynamic[]
ProcessThreadCollection
获取当前进程中的所有线程
public static ProcessThreadCollection ProcessThreadCollection { get; }Property Value
Provider
提供用于获取注入对象的服务
public static IServiceProvider Provider { get; }Property Value
Services
提供用于添加对象服务
public static IServiceCollection Services { get; }Property Value
Static
全局公共对象 可以用于 存放任何对象 管理,存在拆箱装箱行为
public static GlobalObj Static { get; }Property Value
Thread
获取当前上下文正在运行的当前线程
public static Thread Thread { get; }Property Value
Methods
Add(object[], object)
给数组加新的值
public static object[] Add(this object[] txt, object txt1)Parameters
txt object[]
Object[]
txt1 object
新增的值
Returns
object[]
由于不能直接赋值,采取间接赋值方式
Add<T>(object, object, object)
给数组加新的值(适用于任何数组对象)
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()
创建用于获取服务对象
调用该函数,将会释放掉原本的服务
public static void BuildProvider()Contains(object[], object)
查找该Object数组中是否存在该值。
public static bool Contains(this object[] txt, object txt1)Parameters
txt object[]
Object[]
txt1 object
查找的字符
Returns
方法存在或不存在
CopyEntity(object, object, params string[])
将对象拷贝,值类型拷贝,引用类型赋值。
public static bool CopyEntity(this object obj, object origobj, params string[] keys)Parameters
obj object
对象
origobj object
拷贝对象
keys string[]
拷贝参数,空,为全拷贝 支持赋值语法 ?=? 注意不支持'空格'
Returns
DynamicAdd(string, object, bool)
添加虚拟参数(备注:如果对象名存在则会在直接修改原对象名内的数据,type字段默认为true,为false时则不进行修改),注明:如果存在多线程添加同一个键值的情况,请自己使用锁解决
[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)
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static object DynamicObjectkey(string key)Parameters
key string
简直名称
Returns
返回结果
DynamicRemove()
删除全部虚拟参数
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static void DynamicRemove()DynamicRemove(string)
删除指定名称的虚拟参数(备注:如果键值不存在则不会删除任何键值,不抛出异常)
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static void DynamicRemove(string key)Parameters
key string
简直名称
Dynamickey(string)
获取指定键值的内容(备注:如果键值不存在则返回null)
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static dynamic Dynamickey(string key)Parameters
key string
简直名称
Returns
dynamic
返回结果
Dynamickey<T>(string)
获取指定键值的内容(备注:如果键值不存在则返回null)
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static T Dynamickey<T>(string key)Parameters
key string
简直名称
Returns
T
返回结果
Type Parameters
T
EntityToJson(object)
将实体转换为JSON格式字符串 (再三强调,要是实体,而且是单个实体。)
public static string EntityToJson(this object obj)Parameters
obj object
实体
Returns
返回JSON字符串
EntityToJson(object, bool)
将实体转换为JSON格式字符串 (再三强调,要是实体,而且是单个实体。)
public static string EntityToJson(this object obj, bool IsDate)Parameters
obj object
实体
IsDate bool
ToJson格式时间,启用转字符串
Returns
返回JSON字符串
EntityToJson(object, bool, string)
将实体转换为JSON格式字符串 (再三强调,要是实体,而且是单个实体。)
public static string EntityToJson(this object obj, bool IsDate, string ToDateString)Parameters
obj object
实体
IsDate bool
ToJson格式时间,启用转字符串
ToDateString string
Date.ToString()的写法。
Returns
返回JSON字符串
GetArrayIndex(object[], int, int)
同于获取指定部分的内容
public static object[] GetArrayIndex(this object[] obj, int index, int count)Parameters
obj object[]
对象数组
index int
从下标N开始
count int
到下标N结束
Returns
object[]
返回一部分的数组内容
GetIntPtr(object)
获取当前对象的内存空间
public static IntPtr GetIntPtr(this object obj)Parameters
obj object
对象
Returns
返回指针
GetIntPtrInt(object)
获取当前对象的内存空间
public static int GetIntPtrInt(this object obj)Parameters
obj object
对象
Returns
返回指针
IsNewTask(Task)
判断当前任务是否是使用了新线程完成,如果使用的是当前线程完成任务,将在返回前,启用新线程继续后续任务
public static Task IsNewTask(this Task task)Parameters
task Task
需要完成的任务
Returns
返回与原线程不一样的继续线程
IsNewTask(ValueTask)
判断当前任务是否是使用了新线程完成,如果使用的是当前线程完成任务,将在返回前,启用新线程继续后续任务
public static ValueTask IsNewTask(this ValueTask task)Parameters
task ValueTask
需要完成的任务
Returns
返回与原线程不一样的继续线程
IsNewTask<TResult>(Task<TResult>)
判断当前任务是否是使用了新线程完成,如果使用的是当前线程完成任务,将在返回前,启用新线程继续后续任务
public static Task<TResult> IsNewTask<TResult>(this Task<TResult> task)Parameters
task Task<TResult>
需要完成的任务
Returns
Task<TResult>
返回与原线程不一样的继续线程
Type Parameters
TResult
IsNewTask<TResult>(ValueTask<TResult>)
判断当前任务是否是使用了新线程完成,如果使用的是当前线程完成任务,将在返回前,启用新线程继续后续任务
public static ValueTask<TResult> IsNewTask<TResult>(this ValueTask<TResult> task)Parameters
task ValueTask<TResult>
需要完成的任务
Returns
ValueTask<TResult>
返回与原线程不一样的继续线程
Type Parameters
TResult
IsPropertyExist(string)
判断当前虚拟对象下面是否有该参数
[Obsolete("当前变量,已过时,请考虑使用 ObjectExtension.Services 使用 IOC 模式")]
public static bool IsPropertyExist(string propertyname)Parameters
propertyname string
参数名
Returns
MapTo(ThreadStart)
实现单线程的访问 (示例:new ThreadStart(delegate (){}) )
public static object MapTo(ObjectExtension.ThreadStart API)Parameters
API ObjectExtension.ThreadStart
Returns
MapTo(object, string, params object[])
实现单线程的访问
public static object MapTo(object obj_T, string Methods, params object[] parameter)Parameters
obj_T object
表示一个类对象实力
Methods string
表示调用的对象的一个方法名(注意该方法必须是非静态方法)
parameter object[]
该方法的参数,如果该方法没有参数可以为null,如有参数必须和方法参数一致
Returns
MapTo<T>(string)
获取某个类下面的方法,方法对应的委托参数
public static ActionDispatcher<T> MapTo<T>(string Methods)Parameters
Methods string
表示调用的对象的方法名
Returns
Type Parameters
T
Read<T>(IntPtr)
将指定的内存空间内容转换成类型
public static T Read<T>(IntPtr address)Parameters
address IntPtr
内存空间
Returns
T
返回类型对象
Type Parameters
T
类型对象
Read<T>(int)
将指定的内存空间内容转换成类型
public static T Read<T>(int address)Parameters
address int
内存空间值
Returns
T
返回类型对象
Type Parameters
T
类型对象
Read<T>(object, object, int, int)
重写封装的Copy方法 (读取原数组中指定位置的内容)
public static int Read<T>(this object sourceArray, object destinationArray, int sourceIndex, int length)Parameters
sourceArray object
源数组对象
destinationArray object
新数组对象
sourceIndex int
源数据开始读取的位置
length int
从源数组取多少?(是指从读取位置开始往后读的数量)
Returns
返回当前新的数组中复制了多少个下标的值
Type Parameters
T
Read<T>(object, int, object, int, int)
重写封装的Copy方法 (读取原数组中指定位置的内容)
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
返回当前新的数组中复制了多少个下标的值
Type Parameters
T
RunTask(Func<Task>, TaskCreationOptions, CancellationToken)
原 StartNew 方法的封装·支持对异步模型的线程创建
public static Task RunTask(this Func<Task> task, TaskCreationOptions creationOptions = TaskCreationOptions.None, CancellationToken token = default)Parameters
creationOptions TaskCreationOptions
token CancellationToken
Returns
RunTask(Func<ValueTask>, TaskCreationOptions, CancellationToken)
原 StartNew 方法的封装·支持对异步模型的线程创建
public static ValueTask RunTask(this Func<ValueTask> task, TaskCreationOptions creationOptions = TaskCreationOptions.None, CancellationToken token = default)Parameters
creationOptions TaskCreationOptions
token CancellationToken
Returns
RunTask<T>(Func<Task<T>>, TaskCreationOptions, CancellationToken)
原 StartNew 方法的封装·支持对异步模型的线程创建
public static Task<T> RunTask<T>(this Func<Task<T>> task, TaskCreationOptions creationOptions = TaskCreationOptions.None, CancellationToken token = default)Parameters
creationOptions TaskCreationOptions
token CancellationToken
Returns
Task<T>
返回结果
Type Parameters
T
RunTask<T>(Func<ValueTask<T>>, TaskCreationOptions, CancellationToken)
原 StartNew 方法的封装·支持对异步模型的线程创建
public static ValueTask<T> RunTask<T>(this Func<ValueTask<T>> task, TaskCreationOptions creationOptions = TaskCreationOptions.None, CancellationToken token = default)Parameters
creationOptions TaskCreationOptions
token CancellationToken
Returns
ValueTask<T>
返回结果
Type Parameters
T
ToBase64String(object)
将对象转换成Base64字符串(编码)
public static string ToBase64String(this object obj)Parameters
obj object
Returns
ToBytes(object)
将一个object对象序列化,返回一个byte[](重要说明:被序列化的对象必须实现 [Serializable] 特性的结构)
[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 类名称
public static byte[] ToBytes(this object obj, out Type type)Parameters
obj object
能序列化的对象
type Type
转换为原来类的Type
Returns
byte[]
返回一个byte[]
ToJson(object)
转换为JSON格式字符串
public static string ToJson(this object obj)Parameters
obj object
object
Returns
JSON字符串
ToJson(object, JsonSerializerOptions)
转换为JSON格式字符串
public static string ToJson(this object obj, JsonSerializerOptions jsonSerializerOptions)Parameters
obj object
object
jsonSerializerOptions JsonSerializerOptions
需要的序列化条件
Returns
JSON字符串
ToJsonWeb(object)
转换为JSON格式字符串,针对Web场景定制Json格式
public static string ToJsonWeb(this object obj)Parameters
obj object
object
Returns
JSON字符串
ToJsonWeb(object, Action<JsonSerializerOptions>)
转换为JSON格式字符串,针对Web场景定制Json格式
public static string ToJsonWeb(this object obj, Action<JsonSerializerOptions> action)Parameters
obj object
object
action Action<JsonSerializerOptions>
委托Json任务
Returns
JSON字符串
ToTryVar<T>(object, T)
实现万能的转换(备注:包含数据类型的转换也包含as的功能和(类型)的功能)(T:适用于转换失败,无法转换时系统返回的默认结果,用于容错)
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的功能和(类型)的功能)
public static T ToVar<T>(this object obj)Parameters
obj object
object实体,参数,对象
Returns
T
返回被指定强转的类型。(异常:存在于强转无效)
Type Parameters
T
对象
ToVar(object, Type, bool)
实现万能的转换(备注:包含数据类型的转换也包含as的功能和(类型)的功能)
public static object ToVar(this object obj, Type type, bool istype = true)Parameters
obj object
object实体,参数,对象
type Type
指定类型的
istype bool
表示强转失败时是否抛异常。返回null
Returns
返回被指定强转的类型。(异常:存在于强转无效)
ToVar(object, string)
实现万能的转换(备注:包含数据类型的转换也包含as的功能和(类型)的功能)
public static dynamic ToVar(this object obj, string type = null)Parameters
obj object
object实体,参数,对象
type string
强转类型,如果为空,默认强转成该对象的Type类型(必须要是当前程序集下的对象,才能转换)
Returns
dynamic
返回被指定强转的类型。(异常:存在于强转无效)
ToXml(object)
转换为Xml格式字符串
public static string ToXml(this object obj)Parameters
obj object
object
Returns
Xml字符串