An open API service indexing awesome lists of open source software.

https://github.com/x-stars/dotnetextensions

.NET extension libraries by XstarS.
https://github.com/x-stars/dotnetextensions

command-line csharp csharp-library data-binding dotnet dotnet-library dynamic-proxy extension union-types validation

Last synced: 6 months ago
JSON representation

.NET extension libraries by XstarS.

Awesome Lists containing this project

README

          

# XstarS .NET 扩展库

**X**starS .**NET** **Ex**tensions => `XNetEx`

天南十字星 (XstarS) 的自用 .NET 扩展库,程序集名称和命名空间均仿照 .NET 框架。

## 框架支持

| .NET | 版本 |
| --------- | ------------ |
| Core | 6.0, 8.0 |
| Framework | 4.6.1, 4.7.2 |
| Standard | 2.0, 2.1 |

> C# 语言版本 >= 10.0

## 程序集 XNetEx.Common

系统基础相关,目前包含的命名空间:

* `XNetEx`
* `XNetEx.Collections`
* `XNetEx.Collections.Generic`
* `XNetEx.Collections.ObjectModel`
* `XNetEx.Collections.Specialized`
* `XNetEx.Diagnostics`
* `XNetEx.IO`
* `XNetEx.Linq`
* `XNetEx.Reflection`
* `XNetEx.Reflection.Emit`
* `XNetEx.Runtime.CompilerServices`
* `XNetEx.Security.Cryptography`
* `XNetEx.Text`

> `XNetEx.Operators` 类型提供部分常用运算符,建议静态引入后调用。

相关文档:

* [对象的通用值相等比较方法](Documentation/ValueEquals.md)
* [析构元组和其他类型](https://docs.microsoft.com/zh-cn/dotnet/csharp/deconstruct)

## 程序集 XNetEx.CommandLine

提供命令行程序的相关服务,包括:

* 简易的命令行参数解析器 `XNetEx.CommandLine.ArgumentReader`,以及其他风格的实现
* 命令提示符 CMD `XNetEx.CommandLine.Specialized.CmdArgumentReader`
* PowerShell `XNetEx.CommandLine.Specialized.PowerShellArgumentReader`
* Unix Shell `XNetEx.CommandLine.Specialized.UnixShellArgumentReader`

相关文档:

* [命令行参数解析器](Documentation/ArgumentReaders.md)

## 程序集 XNetEx.Console

提供控制台相关的扩展方法,包括:

* 控制台方法扩展 `XNetEx.ConsoleEx`
* 逐个读取按空白符分隔的输入 `ReadToken`
* 逐个读取按空白符分隔的输入并转换为值 `ReadTokenAs`
* 以指定的颜色将值写入输出流 `WriteInColor`
* 以指定的颜色将值写入错误流 `WriteErrorInColor`

## 程序集 XNetEx.Collections.StructuralComparing

提供结构化对象(数组、集合等)的结构化相等比较的方法。

核心 API 类型:

* 对象的结构化相等比较 `XNetEx.Collections.Generic.StructuralEqualityComparer`

## 程序集 XNetEx.Diagnostics.Representation

提供将对象或结构化对象(数组、集合等)表示为文本的方法。

核心 API 类型:

* 将对象表示为文本 `XNetEx.Diagnostics.Representer`
* 将结构化对象表示为文本 `XNetEx.Diagnostics.StructuralRepresenter`

## 程序集 XNetEx.Diagnostics.ValueValidate

提供连续的对象的值的验证和抛出异常的方法。

相关文档:

* [对象的值的验证](Documentation/ValueValidate.md)

## 程序集 XNetEx.ObjectModel

提供部分组件模型类型的实现,包括:

* 属性更改通知 `System.ComponentModel.INotifyPropertyChanged`
* `XNetEx.ComponentModel.ObservableDataObject`
* 数据实体验证 `System.ComponentModel.INotifyDataErrorInfo`
* `XNetEx.ComponentModel.ObservableValidDataObject`
* 命令 `System.Windows.Input.ICommand`
* `XNetEx.Windows.Input.DelegateCommand`

此外还为枚举类型提供了特定的的视图类型,包括:

* 枚举列表视图 `XNetEx.ComponentModel.EnumListView`
* 枚举向量视图 `XNetEx.ComponentModel.EnumVectorView`
* 位域枚举向量视图 `XNetEx.ComponentModel.EnumFlagsVectorView`

相关文档:

* [属性更改通知接口实现框架](Documentation/ObservableObject.md)
* [属性更改通知实现方式比较](Documentation/ObservableObjectCompare.md)

## 程序集 XNetEx.ObjectModel.ObservableProxy

提供以反射发出 `System.Reflection.Emit` 构造的属性更改通知类型 `System.ComponentModel.INotifyPropertyChanged`。

相关文档:

* [属性更改通知接口实现框架](Documentation/ObservableObject.md)
* [属性更改通知实现方式比较](Documentation/ObservableObjectCompare.md)
* [属性更改通知类型提供对象](Documentation/ObservableTypeProvider.md)

## 程序集 XNetEx.Reflection

提供与动态类型生成和动态方法相关的扩展方法,并提供应用以上技术实现的快速动态调用的扩展方法。

核心 API 类型:

* IL 指令发出扩展 `XNetEx.Reflection.Emit.ILGeneratorExtensions`
* 动态类型定义扩展 `XNetEx.Reflection.Emit.TypeBuilderExtensions`
* 类型成员动态调用委托创建 `XNetEx.Reflection.MemberDelegateExtensions`
* 类型成员快速动态调用扩展 `XNetEx.Reflection.MemberFastInvokeExtensions`

## 程序集 XNetEx.Reflection.DispatchProxy

提供转发代理类型 `System.Reflection.DispatchProxy` 基于委托的简易实现。

## 程序集 XNetEx.Reflection.DynamicProxy

提供以反射发出 `System.Reflection.Emit` 构造的动态代理类型。

方法调用包装为通用静态委托 `XNetEx.Reflection.MethodDelegate`,保持动态代理灵活性的同时避免了反射调用的低效率问题。

核心 API 类型:

* 直接代理类型 `XNetEx.Reflection.DirectProxyTypeProvider`
* 包装代理类型 `XNetEx.Reflection.WrapProxyTypeProvider`

## 程序集 XNetEx.Primitives

提供框架原生值类型的补充类型,包括:

* 24 位有符号整数 `XNetEx.Int24`
* 24 位无符号整数 `XNetEx.UInt24`
* 半精度浮点数 `XNetEx.Half`

## 程序集 XNetEx.Primitives.Unions

提供框架原生值类型的联合 `union`,包括:

* 8 位数据类型联合 `XNetEx.Unions.ByteUnion`: `Byte`, `SByte`, `Boolean`
* 16 位数据类型联合 `XNetEx.Unions.WordUnion`: `Int16`, `UInt16`, `Char`
* 32 位数据类型联合 `XNetEx.Unions.DWordUnion`: `Int32`, `UInt32`, `Single`
* 64 位数据类型联合 `XNetEx.Unions.QWordUnion`: `Int64`, `UInt64`, `Double`
* 指针或句柄类型联合 `XNetEx.Unions.HandleUnion`: `IntPtr`, `UIntPtr`, `Void*`

## 程序集 XNetEx.Win32

Win32 相关,目前包含的命名空间:

* `XNetEx.Win32`
* `XNetEx.Win32.Profiles`

## 程序集 XNetEx.Windows

WPF 相关,目前包含的命名空间:

* `XNetEx.Windows.Controls`
* `XNetEx.Windows.Data`

XAML 命名空间:

``` XML

```