跳转到内容

.NET 开发基础/互操作性类

来自 Wikibooks,开放世界中的开放书籍


互操作性、反射和邮件:类、接口和工具


类、接口和工具

[编辑 | 编辑源代码]

COM 互操作性

[编辑 | 编辑源代码]

考试目标:将 COM 组件公开到 .NET Framework,并将 .NET Framework 组件公开到 COM

(参考 System.Runtime.InteropServices 命名空间)

将 COM 组件公开到 .NET Framework

[编辑 | 编辑源代码]
首先,.NET 开发人员指南中有一篇文章涵盖了本节的第一部分,请参见 MSDN

将类型库导入为程序集 - MSDN

添加对类型库的引用
与上面链接相同,请参见第二段。
类型库导入器 (Tlbimp.exe) - MSDN
从类型库生成互操作程序集 - MSDN
导入库转换 - MSDN
导入模块转换 - MSDN
导入类型转换 - MSDN
导入成员转换 - MSDN
导入参数转换 - MSDN
TypeConverter 类 - MSDN

在托管代码中创建 COM 类型 - MSDN

编译互操作项目 - MSDN

部署互操作应用程序 - MSDN

将 .NET Framework 组件公开到 COM

[编辑 | 编辑源代码]
该部分的其余目标直接引用 MSDN

限定 .NET Framework 类型以进行互操作 - MSDN

应用互操作属性,例如 ComVisibleAttribute 类 - MSDN

为 COM 打包程序集 - MSDN

部署供 COM 访问的应用程序 - MSDN

调用 DLL 函数

[编辑 | 编辑源代码]

考试目标:在 .NET Framework 应用程序中调用非托管 DLL 函数,并控制 .NET Framework 应用程序中的数据封送处理。

(参考 System.Runtime.InteropServices 命名空间)

平台调用 - MSDN

创建一个类来保存 DLL 函数 - MSDN

在托管代码中创建原型 - MSDN

DllImportAttribute 类 - MSND

调用 DLL 函数 - MSDN

在互联网上搜索“P/Invoke”。
一个很好的参考是:http://www.pinvoke.net/
一些简短的提示
  • 对于 DllAttribute “CharSet”,从逻辑上讲,CharSet.Auto 是最安全的方式,因为它将自动检测使用的字符集。字符集可以是 ANSI(Win95/Win98/ME) 或 Unicode (Win2000/WinXP)
  • GetEntryPoint:可能有一个棘手的问题,因为 EntryPoint 指示应调用的方法。如果使用的方法名称与要调用的方法名称不同,则需要此标志。

在特殊情况下调用 DLL 函数,例如传递结构和实现回调函数

与上面链接相同
传递结构 - MSDN
实现回调函数 - MSDN

创建一个新的 Exception 类并将其映射到 HRESULT - MSDN

默认封送处理行为 - MSDN

使用平台调用封送处理数据 - MSDN

使用 COM 互操作性封送处理数据 - MSDN

MarshalAsAttribute 类和 Marshal 类

MarshalAsAttribute 类 - MSDN
Marshal 类 - MSDN

实现反射

[编辑 | 编辑源代码]

考试目标:在 .NET Framework 应用程序中实现反射功能(参考 System.Reflection 命名空间),并使用 System.Reflection.Emit 命名空间创建元数据、Microsoft 中间语言 (MSIL) 和 PE 文件。

构建自定义属性(附件)

Assembly 类 -MSDN

程序集属性 - MSDN

AssemblyAlgorithmIdAttribute 类 - MSDN
AssemblyCompanyAttribute 类 - MSDN
AssemblyConfigurationAttribute 类 - MSDN
AssemblyCopyrightAttribute 类 - MSDN
AssemblyCultureAttribute 类 - MSDN
AssemblyDefaultAliasAttribute 类 - MSDN
AssemblyDelaySignAttribute 类 - MSDN
AssemblyDescriptionAttribute 类 - MSDN
AssemblyFileVersionAttribute 类 - MSDN
AssemblyFlagsAttribute 类 - MSDN
AssemblyInformationalVersionAttribute 类 - MSDN
AssemblyKeyFileAttribute 类 - MSDN
AssemblyTitleAttribute 类 - MSDN
AssemblyTrademarkAttribute 类 - MSDN
AssemblyVersionAttribute 类 - MSDN

信息类

ConstructorInfo 类 - MSDN
MethodInfo 类 - MSDN
MemberInfo 类 - MSDN
PropertyInfo 类 - MSDN
FieldInfo 类 - MSDN
EventInfo 类 - MSDN
LocalVariableInfo 类 - MSDN

Binder 类和 BindingFlags - MSDN

MethodBase 类和 MethodBody 类

MethodBase 类 - MSDN
MethodBody 类 - MSDN

生成器类

AssemblyBuilder 类 - MSDN
ConstructorBuilder 类 - MSDN
EnumBuilder 类 - MSDN
EventBuilder 类 - MSDN
FieldBuilder 类 - MSDN
LocalBuilder 类 - MSDN
MethodBuilder 类 - MSDN
ModuleBuilder 类 - MSDN
ParameterBuilder 类 - MSDN
PropertyBuilder 类 - MSDN
TypeBuilder 类 - MSDN

发送电子邮件

[edit | edit source]

考试目标:从 .NET Framework 应用程序向简单邮件传输协议 (SMTP) 服务器发送电子邮件以进行传递。

(请参考 System.Net.Mail 命名空间)

MailMessage 类 - MSDN

MailAddress 类和 MailAddressCollection 类

MailAddress 类 - MSDN
MailAddressCollection 类 - MSDN

SmtpClient 类、SmtpPermission 类和 SmtpPermissionAttribute 类

SmtpClient 类 - MSDN
SmtpPermission 类 - MSDN
SmtpPermissionAttribute 类 - MSDN

Attachment 类、AttachmentBase 类和 AttachmentCollection 类

Attachment 类 - MSDN
AttachmentBase 类 - MSDN
AttachmentCollection 类 - MSDN

SmtpException 类、SmtpFailedReceipientException 类和 SmtpFailedReceipientsException 类

SmtpException 类 - MSDN
SmtpFailedReceipientException 类 - MSDN
请注意,考试目标页面中存在一个错别字,它们使用的是 SmtpFailedReceipientException 而不是 SmtpFailedRecipientException。
SmtpFailedRecipientsException 类 - MSDN
与上面相同的错别字

SendCompleteEventHandler 委托 - MSDN

LinkedResource 类和 LinkedResourceCollection 类

LinkedResource 类 - MSDN
LinkedResourceCollection 类 - MSDN

AlternateView 类和 AlternateViewCollection 类

AlternateView 类 - MSDN
AlternateViewCollection 类 - MSDN
华夏公益教科书