aardio 文档

dotNet.appDomain 库模块帮助文档

dotNet 成员列表 #

dotNet.appDomain #

创建应用程序域,
注意应当通过导入 dotNet 库自动导入 dotNet.appDomain

dotNet.appDomain() #

不指定参数为当前线程创建唯一的应用程序域实例,
该实例可能被其他代码使用,主动调用 unload 函数会被忽略,
线程结束前会自动释放此实例。

成功返回应用程序域,失败返回 null,错误信息,
失败一般是因为系统没有安装 .NET 运行时。
除了XP系统,WIN7 以及 WIN7 以上系统已自带 .NET 运行时,
所以不检测返回值也行。

注意应当通过导入 dotNet 库自动导入 dotNet.appDomain

返回对象:dotNetAppDomainObject

dotNet.appDomain(clr,domainName) #

参数 @clr 指定 dotNet.clr 对象,
可选用 @domainName 指定应用程序域名称,
指定参数时应改用 dotNet.clr 对象的 createAppDomain 函数

无参数调用 dotNet.appDomain 总是返回默认单例应用程序域,
引入 dotNet 库也会自动创建默认应用程序域

dotNetAppDomainObject 成员列表 #

dotNetAppDomainObject.Array #

System.Array

dotNetAppDomainObject.Drawing #

System.Drawing

dotNetAppDomainObject.appDomainReal #

AppDomain 托管对象

dotNetAppDomainObject.buffer #

调用 raw.buffer 分配可读写的、固定长度的字节串(buffer 类型)
并返回封包 buffer 的 dotNet.object 对象。
返回对象可用下标操作符 [] 读写 8 位无符号字节数值。
可用 Value 属性获取 buffer 对象,用法请参考 raw.buffer 文档。
可用 Length 属性获取数组长度。

在 .NET 中对应类型为 byte[] 字节数组。
可作为 .NET 引用、输出参数使用。

dotNetAppDomainObject.buffer(初始值) #

创建缓冲区,参数用法与 raw.buffer 相同。
参数 @1 可以指定一个结构体、字符串、或 buffer,传入空表 {} 返回 null,
此函数将重新分配内存并复制 参数 @1 指定的初始值数据。

dotNetAppDomainObject.buffer(长度,初始值) #

创建缓冲区,参数用法与 raw.buffer 相同。

参数一指定需要分配的内存大小,

参数 @2 可以用结构体、指针、buffer 或字符串之一指定一段内存数据作为初始值,
也可用一个数值指定填充到所有字节的初始值,不指定默认初始化所有字节为 0 ,
如果初始值指定为字符串或 buffer 类型,
填充初始数据以后多余的字节丢弃,不足的部分会填充字节码为 0,

dotNetAppDomainObject.byte #

创建 .NET System.SByte 类型数值或数组

dotNetAppDomainObject.byte(value,byRef) #

创建 .NET System.SByte 类型数值或数组,
用于存储8位整数。

参数 @value 可以为数值或数组,
参数 @byRef 为 true 则支持 .NET 的输出或引用参数

dotNetAppDomainObject.char #

创建 .NET System.Char 类型数值或数组

dotNetAppDomainObject.char(value,byRef) #

创建 .NET System.Char 类型数值或数组,
用于存储 16 位无符号整数。

参数 @value 可以指定数值、字符串或数值数组。
数组参数必须是普通的 aardio 数值数组(double 类型)或 16 位无符号整型 COM 数组。
参数 @byRef 为 true 则支持 .NET 的输出或引用参数

.NET 的 char 类型数组在 aardio 中将转换为 16 位无符号整型 COM 数组(SafeArray)。
显式调用 dotNet.char 创建 .NET 对象可避免被自动转换为 COM 数组。

dotNetAppDomainObject.clr #

.NET 运行时

返回对象:dotNetClrObject

dotNetAppDomainObject.color(value,byRef) #

创建 .NET System.Drawing.Color 类型数值或数组。
.NET 的 System.Drawing.Color 类型在 aardio 中会自动转换为数值,
显式调用 dotNet.color 创建 .NET 对象可避免被自动转换。

dotNetAppDomainObject.createArray #

创建 .NET 类型化数组。
.NET 通常要求数组类型完全匹配,可以用这个函数创建类型匹配的数组。

包含.NET 对象的普通 aardio 数组在传入 .NET 时也会临时转换为类型化数组
默认的普通数值数组传入 .NET 为 double 数组,但支持自适应转换类型。
也可以用 dotNet.double,dotNet.int 等函数创建类型化数值数组。

注意 .NET 数组对象应当用 Length 属性取数组长度而非用 #号取长度,
.NET 中的简单值类型数组在 aardio 中会转换为 com.SafeArray 数组,
com.SafeArray 数组可以用 # 取长度

dotNetAppDomainObject.createArray(数组) #

参数 @1 请指定数组。
包含.NET 对象的普通数组返回为 .NET 类型化数组,
传入其他任何类型参数直接返回

dotNetAppDomainObject.createArray(类型,长度...) #

参数 @1 请指定 .NET 类型,
类型通常由 dotNet.import 导入,或用 .NET 对象的 GetType 函数获取。
至少指定一个数组长度参数,可指定多个长度参数以创建多维数组

dotNetAppDomainObject.createArrayList() #

返回对象:dotNetCrlArrayListObject

dotNetAppDomainObject.createArrayList(初始化数组) #

创建 System.Collections.ArrayList 对象
可传递到C#函数中,C#中应声明为 object 类型,然后强制转换为 ArrayList,
可选参数一指定 table 数组用于初始化对象

dotNetAppDomainObject.createCompiler("C#") #

创建C#编译器

dotNetAppDomainObject.createCompiler("VB") #

创建VB编译器

dotNetAppDomainObject.createCompiler() #

返回对象:dotNetCompilerObject

dotNetAppDomainObject.createInstance(程序集,"类名",其他调用参数) #

参数一可以是程序集对象,名称或路径都可以,
调用类的构造函数,支持传入多个调用参数并返回创建的对象。
失败返回空值,以及错误信息

dotNetAppDomainObject.createNameValueList(names,values) #

创建 List> 列表对象,
参数@name,@value 必须是长度相等的非空数组,
返回 List 对象的每个元素都具有 Name,Value 属性,
其值由 @names,@values 参数按数组索引顺序分配

dotNetAppDomainObject.createWebService #

创建 Web 服务程序集

dotNetAppDomainObject.createWebService() #

返回对象:dotNetCrlAssemblyObject

dotNetAppDomainObject.createWebService(服务网址,命名空间,协议名,DLL路径) #

使用当前线程默认应用程序域创建 Web 服务程序集。
服务网址不需要加 ?WSDL 后缀。
可选用参数 @2 中指定一个自定义的命名空间
协议名默认为"Soap",可选值"Soap12",
如果未使用参数 @4 指定输出 DLL 路径则在内存中编译程序集

dotNetAppDomainObject.delegate #

用于操作 .NET 委托(Delegate)或事件(event),
在 .NET 里函数要转换为委托对象才能作为回调函数传输,
在 aardio 里对所有 .NET 对象的委托字段直接赋值总是覆盖而不是追加,
对所有 .NET 事件赋值时总是追加而不是覆盖,

返回对象:dotNetDelegateObject

dotNetAppDomainObject.dict #

将非空表转换为 .NET 字典。
如果要创建空字典,调用返回对象的 Clear 函数清空即可。
返回对象支持用下标操作符访问键值对。
可用 dotNet.each 遍历字典。

dotNetAppDomainObject.dict() #

返回对象:DotNetDictionaryObject

返回对象:DotNetDictionaryObject

dotNetAppDomainObject.dict(keyType,valueType,byRef) #

参数 @keyType 指定键的 .NET 类型或类型名称。
参数 @valueType 指定值的 .NET 类型或类型名称。
如果 @valueType 指定布尔类型值,则参数 @byRef 也必须指定布尔类型的值。
参数 @byRef 为可选参数
如果 @byRef 为 true,则返回对象可作为 .NET 输出与引用参数使用

dotNetAppDomainObject.dict(tab,byRef) #

将非空表转换为 .NET 字典(Dictionary)对象。

如果传入空表或 null 返回 null 值。
否则必须传入非空表,表中所有的键必须是相同类型。
表中所有的值必须是相同类型。

参数 @byRef 为可选参数,只能指定为布尔类型的值(true/false)或省略。
如果 @byRef 为 true,则返回对象可作为 .NET 输出与引用参数使用

dotNetAppDomainObject.double #

创建 .NET System.Double 类型数值或数组

dotNetAppDomainObject.double(value,byRef) #

创建 .NET System.Double 类型数值或数组,
用于存储64位浮点数。

参数 @value 可以为数值或数组,
参数 @byRef 为 true 则支持 .NET 的输出或引用参数,

注意普通数值传入 .NET 函数时,
整数默认转为32位整数,小数默认按double类型处理

dotNetAppDomainObject.each(netObj) #

for i,v in dotNetAppDomainObject.each(/*输入需要遍历的 .NET 对象或普通数组,  
返回值 i 为当前索引,v 为当前值,  
注意并非所有 .NET 类型都支持此接口*/) {

}

dotNetAppDomainObject.float #

创建 .NET System.Single 类型数值或数组

dotNetAppDomainObject.float(value,byRef) #

创建 .NET System.Single 类型数值或数组,
用于存储32位浮点数。

参数 @value 可以为数值或数组,
参数 @byRef 为 true 则支持 .NET 的输出或引用参数

dotNetAppDomainObject.getInstanceMember(目标对象,"字段名") #

获取对象字段或属性
失败返回空值,以及错误信息

dotNetAppDomainObject.getStaticMember(程序集,"类型名.字段名") #

参数一可以是程序集对象,名称或路径都可以,
获取静态字段、属性值、枚举值等。

dotNetAppDomainObject.getTime() #

参数 @1 指定的 .NET 创建的 System.DateTime 对象,
转换并返回为 aardio 的 time 对象。

如果参数不是 .NET 对象则返回 null。

返回对象:timeObject

dotNetAppDomainObject.id #

应用程序域 ID\

dotNetAppDomainObject.import #

加载程序集,导入 .NET 命名空间、类、枚举。
在当前应用程序域 import,load 等函数不会导入重复的程序集,
同一程序集中不会重复导入相同的命名空间。

如果已存在同名的全局命名空间但元表为空(并未导入 .NET 命名空间),
则导入 .NET 命名空间到已存在的命名空间。

如果已存在同名的全局命名空间但元表非空(通常为已导入的 .NET 命名空间 ),
则不会覆盖已存在的名字间,而是在返回值返回当前调用实际创建的命名空间。
加载程序集或依赖程序集失败时此函数会抛出异常。

dotNetAppDomainObject.import() #

返回对象:dotNetNameSpaceObject

dotNetAppDomainObject.import(命名空间) #

加载参数 @1 指定文件名的程序集,并导入同名的 .NET 命名空间或类。
当程序集文件名与导入名字相同时,可以省略 指定程序集名称的参数 @2。

返回命名空间可作为类构造函数调用并创建对象。
也可以用成员操作符获取静态成员,或调用静态函数。

导入的 .NET 命名空间在正常访问其成员时会触发元方法以获取并创建下级命名空间、类、枚举等。
但导入命名空间的函数(以及 namespace 语句)创建的上级命名空间并不会主动导入同名 .NET 命名空间\。

此函数会尽可能重用已存在的 aardio 全局命名空间导入 .NET 命名空间。
如果该全局命名空间已导入其他 .NET 命名空间则不会覆盖已存在的名空间。
此函数总是会返回当前调用实际创建的命名空间。

dotNetAppDomainObject.import(命名空间,程序集名) #

加载参数@2指定文件名字的程序集。
将 参数@1 指定的空间、类、枚举等导入 aardio 全局命名空间。
必须指定完整命名空间。
参数 @1 可指定命名空间也可以指定要导入的命名空间数组。

在当前应用程序域 import,load 等函数不会导入重复的程序集,
同一程序集中不会重复导入相同的命名空间。

返回命名空间可作为类构造函数调用并创建对象。
也可以用成员操作符返回静态成员,或调用静态函数。

导入的 .NET 命名空间在正常访问其成员时会触发元方法以获取并创建下级命名空间、类、枚举等。
但导入命名空间的函数(以及 namespace 语句)创建的上级命名空间并不会主动导入同名 .NET 命名空间。

此函数会尽可能重用已存在的 aardio 全局命名空间导入 .NET 命名空间。
如果该全局命名空间已导入其他 .NET 命名空间则不会覆盖已存在的名空间。
此函数总是会返回当前调用实际创建的命名空间

dotNetAppDomainObject.int #

创建 .NET System.Int32 类型数值或数组

dotNetAppDomainObject.int(value,byRef) #

创建 .NET System.Int32 类型数值或数组,
用于存储32位整数。

参数 @value 可以为数值或数组,
参数 @byRef 为 true 则支持 .NET 的输出或引用参数,

注意普通数值传入 .NET 函数时,
整数默认转为32位整数,小数默认按double类型处理

dotNetAppDomainObject.interop #

aardio.Interop.dll 程序集

返回对象:dotNetCrlAssemblyObject

dotNetAppDomainObject.invokeInstanceMember(目标对象,"方法名",其他调用参数) #

调用类的成员方法,支持传入多个调用参数并返回值
失败返回空值,以及错误信息

dotNetAppDomainObject.invokeMember(程序集,"类名","方法名",BindingFlags,目标对象,其他调用参数) #

调用类方法,目标对象可省略,
失败返回空值,以及错误信息

dotNetAppDomainObject.invokeStaticMember(程序集,"类型名.方法名",其他调用参数) #

参数一可以是程序集对象,名称或路径都可以,
调用类的静态方法,支持传入多个调用参数并返回值。
失败返回空值,以及错误信息

dotNetAppDomainObject.list #

此函数会调用 System.Collections.Generic.$List 实例化泛型类,
然后调用实例化的泛型类构造列表对象。
返回构造的 .NET 列表对象

dotNetAppDomainObject.list() #

返回对象:DotNetListObject

dotNetAppDomainObject.list(aaray,byRef) #

参数 @aaray 指定非空数组,自元素获取类型。
创建列表对象以后将会添加 参数 @aaray 指定数组的全部元素。

参数 @byRef 为可选参数,如果 @byRef 为 true,
则返回对象可作为 .NET 输出与引用参数使用

dotNetAppDomainObject.list(typeOrTypeName,byRef) #

参数 @typeOrTypeName 指定 .NET 类名 .NET 类型名。
指定外部 .NET 程序集加载的类型名时,
必须是通过全局命名空间可访问的完整类型名。
参数 @1 也可以直接指定导入的 .NET 类型

参数 @byRef 为可选参数,如果 @byRef 为 true,
则返回对象可作为 .NET 输出与引用参数使用

dotNetAppDomainObject.load #

使用当前线程默认应用程序域载入并返回程序集(DLL)。
在当前应用程序域如果已使用此函数导入同名程序集,
则直接返回该程序集

dotNetAppDomainObject.load("程序集名") #

使用当前线程默认应用程序域载入并返回程序集。
参数可以是程序集(DLL)名称或路径。

此函数会按以下顺序调用 .NET 函数尝试加载程序集:
└── Assembly.LoadWithPartialName
└── Assembly.Load
└── Assembly.LoadFrom
└── Assembly.LoadFile

dotNetAppDomainObject.load("程序集名",虚拟程序集数据或路径) #

首先在『虚拟程序集引用表』中注册程序集名,
参数 @2 指定对应的内存 DLL 数据或 DLL 路径(支持 EXE 内嵌资源)。
然后再调用 load 函数加载并返回该虚拟程序集

dotNetAppDomainObject.load() #

返回对象:dotNetCrlAssemblyObject

dotNetAppDomainObject.loadAppData #

可用于嵌入并自 %appData% 目录加载
不支持通过 loadFile 函数内存加载的程序集

dotNetAppDomainObject.loadAppData() #

返回对象:dotNetCrlAssemblyObject

dotNetAppDomainObject.loadAppData(path,data) #

用 @path 指定 %appData% 目录下的相对路径,
将 @data 参数指定的内存程序集数据释放到该路径,
并使用 load 函数加载此程序集,
@data 参数应在路径前加$符号使文件数据嵌入到代码中

dotNetAppDomainObject.loadFile #

使用当前线程默认应用程序域载入程序集(DLL)。
参数可以是 DLL 路径,内存 DLL,或 EXE 内嵌资源。
此函数并不支持 『虚拟程序集引用表』,无法在内存添加依赖 DLL
程序集如果引用了自身路径必须改用 load 函数加载

dotNetAppDomainObject.loadFile("程序集路径") #

使用当前线程默认应用程序域载入程序集,
参数可以是 DLL 路径,内存 DLL,或 EXE 内嵌资源。

在路径字符串前加$符号可将文件编译并嵌入 aardio 代码,
可选在第2个参数中指定pdb调试数据或pdb调试文件路径

dotNetAppDomainObject.loadFile() #

返回对象:dotNetCrlAssemblyObject

dotNetAppDomainObject.long #

创建 .NET System.Int64 类型数值或数组

dotNetAppDomainObject.long(value,byRef) #

创建 .NET System.Int64 类型数值或数组,
用于存储64位整数。

参数 @value 可以为数值或数组,
参数 @byRef 为 true 则支持 .NET 的输出或引用参数

dotNetAppDomainObject.object #

转换参数 @1 指定的 aardio 值或数组为 .NET 原生 DispatchableObject 对象,
并返回为 aardio 可操作的 dotNet.object 对象。

也可用于转换 原生 .NET 对象为 dotNet.object ,
或转换 dotNet.object 为支持引用 dotNet.object。

dotNet.object 如果存储的是 Primitive,enum,string 类型或这些类型的数组,
则可以使用 Value 属性读写值。

dotnet.object 对象支持用 tostring 转换为字符串,
如果存储的是数值则支持调用 tonumber 函数转为普通数值。

dotNetAppDomainObject.object(value,byRef) #

参数 @byRef 为 true 则支持 .NET 的输出或引用参数

参数 @value 如果指定纯 aardio 对象或数组。
则转换为 .NET 原生 DispatchableObject 对象,并封装为 dotNet.object 后返回。

如果参数 @1 指定 dotNet.object 对象且参数 @2 不为 true 则直接返回。
如果参数传入原生 .NET 对象且参数 @2 不为 true 则仅转换为 dotNet.object。
如果参数 @2 为 true,则这些对象都会转换为 DispatchableObject 并返回新的 dotNet.object

dotNetAppDomainObject.reference #

在『虚拟程序集引用表』注册一个或多个虚拟程序集,
这些虚拟程序集可以是内存程序集、本地程序集、EXE 内嵌资源中的程序集。

aardio 加载的 .NET 程序找不到程序集(DLL)时,
会查找『虚拟程序集引用表』并加载已注册的虚拟 DLL

dotNetAppDomainObject.reference(assemblyName2pathOrData) #

在『虚拟程序集引用表』注册多个虚拟程序集(DLL)。
@assemblyName2pathOrData 指定一个表:
表的「键」为虚拟程序集短名称( DLL 文件名 ),

键对应的「值」指定程序集内存数据或程序集路径(支持内嵌资源)

dotNetAppDomainObject.reference(simpleAssemblyName,pathOrData) #

在『虚拟程序集引用表』注册虚拟程序集(DLL)。
@simpleAssemblyName 指定程序集短名称(虚拟 DLL 文件名)
@pathOrData 指定程序集路径或内存数据,支持内嵌资源路径
@pathOrData 也可以是返回程序集路径或数据的回调函数

dotNetAppDomainObject.setInstanceMember(目标对象,"字段名",值) #

设置对象实例的字段或属性
成功返回 true ,失败返回空值,以及错误信息

dotNetAppDomainObject.ubyte #

创建 .NET System.Byte 类型数值或数组

dotNetAppDomainObject.ubyte(value,byRef) #

创建 .NET System.Byte 类型数值或数组,
用于存储8位无符号整数。

参数 @value 可以为数值或数组,
参数 @byRef 为 true 则支持 .NET 的输出或引用参数

dotNetAppDomainObject.uint #

创建 .NET System.UInt32 类型数值或数组

dotNetAppDomainObject.uint(value,byRef) #

创建 .NET System.UInt32 类型数值或数组,
用于存储32位无符号整数。

参数 @value 可以为数值或数组,
参数 @byRef 为 true 则支持 .NET 的输出或引用参数

dotNetAppDomainObject.ulong #

创建 .NET System.UInt64 类型数值或数组

dotNetAppDomainObject.ulong(value,byRef) #

创建 .NET System.UInt64 类型数值或数组,
用于存储64位无符号整数。

参数 @value 可以为数值或数组,
参数 @byRef 为 true 则支持 .NET 的输出或引用参数

dotNetAppDomainObject.unload() #

卸载应用程序域,一般不需要手动调用此函数,
当前线程退出时会自动释放此线程创建的所有应用程序域,
不带参数调用 dotNet.appDomain 创建的应用程序域不应手动调用此函数释放

dotNetAppDomainObject.utility #

aardio.Interop.Utility 对象

dotNetAppDomainObject.uword #

创建 .NET System.UInt16 类型数值或数组

dotNetAppDomainObject.uword(value,byRef) #

创建 .NET System.UInt16 类型数值或数组,
用于存储16位无符号整数。

参数 @value 可以为数值或数组,
参数 @byRef 为 true 则支持 .NET 的输出或引用参数

dotNetAppDomainObject.word #

创建 .NET System.Int16 类型数值或数组

dotNetAppDomainObject.word(value,byRef) #

创建 .NET System.Int16 类型数值或数组,
用于存储16位整数。

参数 @value 可以为数值或数组,
参数 @byRef 为 true 则支持 .NET 的输出或引用参数

dotNetAppDomainObject.wrapObject() #

如参数是原生 .NET 对象,则返回 dotNet.object 对象,否则直接返回参数。

所有 .NET 原生对象已经自动转换为 dotNet.object 对象,
除非 .NET 调用普通 aardio 对象的成员函数而非回调特定的委托或事件函数。
这时候回调参数中的 .NET 对象需要用此函数转换,但数值和字符串不需要转换。

参数传入 com.IsNetObject 函数会返回非 0 值即为原生 .NET 对象,
非原生 .NET 对象转换为 dotNet.object 应当直接调用 dotNet.object 函数。

dotNetNameSpaceObject 成员列表 #

dotNetNameSpaceObject.* #

.NET 命名空间、类、结构体的成员,
可访问成员命名空间、类、枚举、静态属性或字段,
导入的类可用于构造 .NET 对象,传回 .NET 则自动转为该类的 Type 对象。
通过下标 ["<>"] 可返回一个创建泛型类的函数,函数参数为类型对象或完整类型名称。

返回对象:dotNetNameSpaceObject

dotNetNameSpaceObject.assembly #

导入此 .NET 命名空间的程序集对象。

返回对象:dotNetCrlAssemblyObject

Markdown 格式