如何在C#中使用元数据工作

212 阅读6分钟

在C#中使用元数据

元数据指的是保存在内存或语言运行时可移植可执行文件中的二进制信息。

当你从一个可移植的可执行文件中编译代码时,数据被添加到另一个文件部分。在移动到另一个文件分区之前,代码被转换为MSIL (微软中间语言)。

在汇编中定义和引用的所有数据类型和成员都包含在元数据中。

当C#代码被执行时,元数据被从内存中加载。模块或程序集中的定义和引用的信息都包含在元数据的描述中。因此,这个组件允许模块和程序集无缝工作。

在这篇文章中,我们将详细讨论元数据的作用和类型。

元数据在Csharp中扮演的角色

  1. 数据挖掘 - 这是使用机器学习、统计学和数据库系统的方法在大数据组合中发现模式的过程。一个采用智能方法挖掘数据模式的必要过程。数据挖掘是计算机科学的一个多学科分支。

  2. Dataload功能--Load function ,从输入的数据文件创建和加载数据库。它可以首次加载一个数据库,或作为数据库重组过程的一部分。

  3. 元数据作为数据提取的工具。它帮助检索和收集来自非结构化或组织性差的资源库的不同数据。

  4. 元数据作为数据仓库中的在线分析处理(OLAP)工具。它帮助支持系统找到数据仓库的内容。它还有助于在数据转换过程中从操作环境到数据仓库的数据映射。

  5. 元数据作为数据转换工具--数据转换可以是建设性的(添加和复制),恶性转换(删除),或结构性的(在数据库中移动和重命名数据)。这样可以改善数据的格式和兼容性。

  6. 元数据作为数据仓库中的查询工具--这允许你创建集合列表,执行定期报告运行,并执行跨表报告和查询。

  7. 元数据具有作为源功能的作用--它协助用户定位相关信息和资源。

使用元数据工作的基本例子

第一个例子

在这个例子中,我们将使用三个数字的除法。我们要用50除以2,再除以5。

如下图所示,在处理元数据或二进制数据时,我们可以看到编译器的机器生成的代码。这种代码总是加密的,因此,人类无法理解。

using System;
public class Division
{
    public static int Main()
    {
        int k = 50, j = 2, t = 5;;
        Console.WriteLine("The division of {0},{1} and {2} is {3}", k, j, t, division(k, j, t));
        return 0;
    }
    public static int division(int k, int j, int t)
    {
        return (k / j / t);
    }
}

输出。

The division of 50 by 2 and 5 is 5

第二个例子

在这个例子中,我们将找到一个矩形的面积。值得注意的是,与第一个例子不同,实际数据是可以查看的。

using System; 
public class AreOfRectangle
{
    public static int Main()
    {
       
        int y = 14;
        
        Console.WriteLine("The rectangle area is {0}:", areaOfRectangle(y));
        return 0;
    }
    public static int areaOfRectangle(int y)
    {
        return (y + y) * 2;
    }
}

输出。

The rectangle area is 56:

元数据的类别

在C#中,有三种类型的元数据。business,technical, 和operational 元数据。

  1. 业务元数据

业务元数据允许你的数据仓库与终端用户进行交流。

商业用户,而不仅仅是IT专业人士,应该了解数据仓库中的内容以及如何利用它。

业务元数据也是用户友好的。它显示了目录中的内容,并提供了去那里的方向。可以把它看作是一个行政导游或路线图。

  1. 技术元数据

它为计算机系统提供了关于数据格式和结构的信息。例子包括数据脉络、访问权限和数据库表格。

  1. 操作性元数据

数据货币和数据世系都包含在这个元数据中。数据货币描述了信息是否是当前的、存档的或删除的。

数据移动和转换的历史被称为数据世系。

类型元数据

一个C#程序在编写后会被编译。汇编代码作为编译的结果被生成。这个汇编文件被用作NET的基础。

扩展名*.dll or *.exe ,表示一个汇编文件。这些部分是你的程序集的构建块。

汇编的组成部分之一是它的元数据,它描述了程序中定义的类型。

例如,软件可以实现一个叫做MyClass的类,而构建的程序集元数据则定义了它。

类型信息在程序间通信中被广泛地利用。下面将讨论其中的一些用例。

  1. Object serialization

为了保存或运输一个对象,它需要被序列化。

序列化将其转换为字节流。这个流可以存储在内存、数据库或文件中。

它的主要功能是保存一个对象的当前状态,以便以后可以恢复它。

  1. Application distribution

一封通知邮件会被发送给注册了App分发的用户。该界面也是用户友好的。应用程序管理器使测试人员能够简单地设置和访问所有应用程序。

  1. Remote work

这个组件允许个人在家工作,仍然有效地分享信息。

  1. Extensive Markup Language(XML) function

有了XML标准,信息格式可以在公共互联网和私人网络上创建并以电子方式共享。

万维网联盟(W3C)的XML代码与HTML代码类似,它是一个正式的准则。

  1. IDE interlanguage interaction

这就是不同的编程语言IDE之间的互动。

元数据描述的类型

在C#.NET中使用元数据描述的类型有以下几种。

  • 枚举
  • 接口
  • 代表
  • 结构

以下组件用于获取C#中的类型信息。

ildasm.exe ,它是一个命令行工具,通过反射读取类型元数据以访问程序集项目。

Ideas 是一个C#工具,可以解析任何.NET框架的DLL。它还以人类可读的格式显示汇编信息。

ildasm.exe 它还显示命名空间、类型和它们的接口。由于这个原因,它提出了更多关于用 (MSIL)编写的代码的信息。Microsoft Intermediate Language

ildasm.exe 分析一些本地程序集,如 ,此外还分析由他人提供或自己创建的.NET框架程序集。Mscorlib.dll

这个程序有不同的方法,其中包括。

System.Object.GetType() 方法是用来确定和定义对象的类型。.NET类的基类是System。

在这种情况下,利用了Object的GetType() 函数,其基本语法是这样的。

public System.Type GetType();

使用typeof() operator.这个方法允许你定义类型信息而不需要创建一个对象。它的一般语法如下。

typeof(someType)

使用System.Type.GetType() 方法或元数据允许人们在一个被称为字符串表示的过程中根据类型的名称来确定类型的信息。

它还使用了后期绑定机制,与System.Object.GetType()GetType() 方法不同的是,由于编译器包含基于反射的代码,信息类型在编译时是未知的。

一般的语法如下。

public System.Type GetType()

结论

C#中的元数据被用来了解更多关于数据的信息。然而,这被加密成binary format, ,这对人类来说是不可理解的。因此,我们将二进制代码转换成常规代码,然后分析其逻辑。