attributeusageC#中DllImport是什么意思啊

attributeusage  时间:2021-07-05  阅读:()

XML中property和attribute的区别

property是指类向外提供的数据区域。

而attribute则是描述对象在编译时或运行时属性的,分为固有型和用户自定义型,其中用户自定义型可以利用Reflection在运行期获取。

这两者是有本质区别的。

资料上说二者一个是service的属性,而另一个是interface的。

第一种好象更准确,摘要如下: 在很多人的脑海中,Attribute就是类的属性,Property呢?好像也是类的属性?因此有很多人不加区别的统一称为类的属性,尤其是在写中文文章的时候。

这种心理是典型的鸵鸟心态,眼不见为净。

其实稍微用脚想一下就知道,事实肯定不是这样的,UML中既然发明了这两个术语,显然不是用来冗余的。

它们之间肯定有着千丝万缕的联系与区别。

各种各样的面向对象语言、各种组件技术、模板技术、Web Service技术,其中大部分涉及到了“属性”这个概念,而其英文术语则常常是Attribute、Property或者Field。

很多人一概称之为“属性”,有的地方确实可以不加区分,但有的地方却是差之毫厘、谬以千里。

我对于这些纷纷扰扰的技术和术语也很苦恼,但是我们至少可以通过UML中的这两个术语的解释找到一个可以参考的标准。

无论如何,UML是面向对象技术的集大成者和事实上的标准。

很客观的说,UML1.4中对于这两个...property是指类向外提供的数据区域。

而attribute则是描述对象在编译时或运行时属性的,分为固有型和用户自定义型,其中用户自定义型可以利用Reflection在运行期获取。

这两者是有本质区别的。

资料上说二者一个是service的属性,而另一个是interface的。

第一种好象更准确,摘要如下: 在很多人的脑海中,Attribute就是类的属性,Property呢?好像也是类的属性?因此有很多人不加区别的统一称为类的属性,尤其是在写中文文章的时候。

这种心理是典型的鸵鸟心态,眼不见为净。

其实稍微用脚想一下就知道,事实肯定不是这样的,UML中既然发明了这两个术语,显然不是用来冗余的。

它们之间肯定有着千丝万缕的联系与区别。

各种各样的面向对象语言、各种组件技术、模板技术、Web Service技术,其中大部分涉及到了“属性”这个概念,而其英文术语则常常是Attribute、Property或者Field。

很多人一概称之为“属性”,有的地方确实可以不加区分,但有的地方却是差之毫厘、谬以千里。

我对于这些纷纷扰扰的技术和术语也很苦恼,但是我们至少可以通过UML中的这两个术语的解释找到一个可以参考的标准。

无论如何,UML是面向对象技术的集大成者和事实上的标准。

很客观的说,UML1.4中对于这两个术语并没有很清晰的定义,但是其区别还是显而易见的。

Attribute应该是UML1.4中的宠儿,而Property连一个单独的术语都没有捞到。

谁也没想到在UML2.0中风云突变,Attribute从类图中消失了,而Property堂而皇之入主中原。

1。

4中 Attribute是与Classifier相关联的术语,它比Property的影响范围要小。

Class是Classifier的子类,因此Attribute也可以表示Class的属性。

从上面的定义还可以看出,Attribute可以是Classifier的实例的命名的槽。

对于Class来说,其实例就是Object,Object的槽就是对象的属性值槽。

因此,Attribute是可以作为对象的属性的。

而Property似乎没有这一层的含义。

按MOF(元对象设施,OMG的另一个规范,后面会有详细解释)的模型层次划分,Attribute涉及的模型层从M2到M0,而Property似乎只是M2层的概念。

2。

0中 Attribute这里仅仅指一个类元的结构特征,可以将类元的实例联系到一个或者一组具体值。

而没有提到实例的槽(slot)等等。

我猜想,这是因为UML2.0中已经把Attribute作为Property的一个子集了,所以关于实例的槽(slot)等等的具体赋值方法,都归结到Property的定义中解释了。

另外一点值得注意的是,Attribute的定义来自于术语表,而没有在元模型图中出现。

而Property出现在元模型图中,并且都做了详细而具体的解释。

这一点可以看出,UML强化Property,弱化Attribute的决心。

Attribute和Property的总结 这一节对Attribute和Property作一个小结,基于目前最新的UML2.0规范: l 总体上来说,Attribute是Property的子集,Property会在适当的时机表现为Attribute; l Property出现在类图的元模型中,代表了Class的所有结构化特征;Attribute没有出现在元模型中,它仅仅在Class的概念中存在,没有相应的语法了; l Property有详细的定义和约束,而Attribute没有详细的定义,因此也不能用OCL写出其约束。

l Property和Attribute都是M2层的概念。

在M1层,它们的实例是具体类的属性;在M0层,它们的实例的实例是具体对象的槽中存储的值。

对于property和attribute这两个名词都叫“属性”的问题,来源于国内it书籍翻译界的疏忽。

其实它们来源于两个不同的领域,attribute属于OOA/OOD的概念,而property属于编程语言中的概念。

下面我们来说明它们的异同。

Attribute Attributes是Microsoft .NET Framework文件的元数据,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。

Property 属性是面向对象编程的基本概念,提供了对私有字段的访问封装,在C#中以get和set访问器方法实现对可读可写属性的操作,提供了安全和灵活的数据访问封装。

关于属性的概念,不是本文的重点,而且相信大部分的技术人员应该对属性有清晰的概念。

以下是简单的属性 区别 可以说两者没有可比性,只不过我们国家的语言特点才引起的歧异,其实只要记住Attribute是派生于System,Attribute类之下,它的主要作用是描述,比如某为了描述某个方法是来自与外部的dll, 可以写如下代码,这就是一个Attribute,他是一个描述(或者说声明) [DllImport("User32.dll")] Attribute也有很多系统的“默认”属性,见下表 预定义的属性 有效目标 说明 AttributeUsage Class 指定另一个属性类的有效使用方式 CLSCompliant 全部 指出程序元素是否与CLS兼容 Conditional Method 指出如果没有定义相关联的字符串,编译器就可以忽略对这个方法的任何调用 DllImport Method 指定包含外部方法的实现的DLL位置 STAThread Method(Main) 指出程序的默认线程模型为STA MTAThread Method(Main) 指出程序的默认模型为多线程(MTA) Obsolete 除了Assembly、Module、Parameter和Return 将一个元素标示为不可用,通知用户此元素将被从未来的产品 ParamArray Parameter 允许单个参数被隐式地当作params(数组)参数对待 Serializable Class、Struct、enum、delegate 指定这种类型的所有公共和私有字段可以被串行化 NonSerialized Field 应用于被标示为可串行化的类的字段,指出这些字段将不可被串行化 StructLayout Class、struct 指定类或结构的数据布局的性质,比如Auto、Explicit或sequential ThreadStatic Field(静态) 实现线程局部存储(TLS)。

不能跨多个线程共享给定的静态字段,每个线程拥有这个静态字段的副本 而Property是指编程过程中的字段,也即类的成员。

如: private int hour; //定义私有变量表示"小时",外部是访问不到的.} public int Hour// 定义Hour程序接口 { set { hour=value; } get { return hour;}

attribute是什么意思

attribute 属性; 特性; 定语; 归因于 People were beginning to?attribute?superhuman qualities to him. 人们开始觉得他超人一等。

很高兴第一时间为您解答,祝学习进步 如有问题请及时追问,谢谢~~O(∩_∩)O

哪位能说说C#反射的GetCustomAttributes方法

使用反射访问属性(C# 编程指南) 如果没有检索自定义属性的信息和对其进行操作的方法,则定义自定义属性并将其放置在源代码中就没有意义。

C# 具有一个反射系统,可用来检索用自定义属性定义的信息。

主要方法是 GetCustomAttributes,它返回对象数组,这些对象在运行时等效于源代码属性。

此方法具有多个重载版本。

有关更多信息,请参见 Attribute。

属性规范,如:

C# [Author("H. Ackerman", version = 1.1)] class SampleClass

在概念上等效于:

C# Author anonymousAuthorObject = new Author("H. Ackerman"); anonymousAuthorObject.version = 1.1;

但是,直到查询 SampleClass 以获取属性时才会执行此代码。

对 SampleClass 调用 GetCustomAttributes 会导致按上述方式构造并初始化一个 Author 对象。

如果类还有其他属性,则其他属性对象的以类似方式构造。

然后 GetCustomAttributes 返回 Author 对象和数组中的任何其他属性对象。

之后就可以对此数组进行迭代,确定根据每个数组元素的类型所应用的属性,并从属性对象中提取信息。

示例下面是一个完整的示例。

定义一个自定义属性,将其应用于若干实体并通过反射进行检索。

C# [System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Struct, AllowMultiple = true) // multiuse attribute ] public class Author : System.Attribute { string name; public double version;

public Author(string name) { this.name = name; version = 1.0; // Default value }

public string GetName() { return name; } }

[Author("H. Ackerman")] private class FirstClass { // ... }

// No Author attribute private class SecondClass { // ... }

[Author("H. Ackerman"), Author("M. Knott", version = 2.0)] private class ThirdClass { // ... }

class TestAuthorAttribute { static void Main() { PrintAuthorInfo(typeof(FirstClass)); PrintAuthorInfo(typeof(SecondClass)); PrintAuthorInfo(typeof(ThirdClass)); }

private static void PrintAuthorInfo(System.Type t) { System.Console.WriteLine("Author information for {0}", t); System.Attribute[] attrs = System.Attribute.GetCustomAttributes(t); // reflection

foreach (System.Attribute attr in attrs) { if (attr is Author) { Author a = (Author)attr; System.Console.WriteLine(" {0}, version {1:f}", a.GetName(), a.version); } } } } 输出Author information for FirstClass

H. Ackerman, version 1.00

Author information for SecondClass

Author information for ThirdClass

H. Ackerman, version 1.00

M. Knott, version 2.00

C#中DllImport是什么意思啊

DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息   DllImport属性应用于方法,要求最少要提供包含入口点的dll的名称。

  DllImport的定义如下:   [AttributeUsage(AttributeTargets.Method)]   public class DllImportAttribute: System.Attribute   {   public DllImportAttribute(string dllName) {…} //定位参数为dllName   public CallingConvention CallingConvention; //入口点调用约定   public CharSet CharSet; //入口点采用的字符接   public string EntryPoint; //入口点名称   public bool ExactSpelling; //是否必须与指示的入口点拼写完全一致,默认false   public bool PreserveSig; //方法的签名是被保留还是被转换   public bool SetLastError; //FindLastError方法的返回值保存在这里   public string Value { get {…} }   }

BuyVM老牌商家新增迈阿密机房 不限流量 月付2美元

我们很多老用户对于BuyVM商家还是相当熟悉的,也有翻看BuyVM相关的文章可以追溯到2014年的时候有介绍过,不过那时候介绍这个商家并不是很多,主要是因为这个商家很是刁钻。比如我们注册账户的信息是否完整,以及我们使用是否规范,甚至有其他各种问题导致我们是不能购买他们家机器的。以前你嚣张是很多人没有办法购买到其他商家的机器,那时候其他商家的机器不多。而如今,我们可选的商家比较多,你再也嚣张不起来。...

[黑五]ProfitServer新加坡/德国/荷兰/西班牙VPS五折,不限流量KVM月付2.88美元起

ProfitServer已开启了黑色星期五的促销活动,一直到本月底,商家新加坡、荷兰、德国和西班牙机房VPS直接5折,无码直购最低每月2.88美元起,不限制流量,提供IPv4+IPv6。这是一家始于2003年的俄罗斯主机商,提供虚拟主机、VPS、独立服务器、SSL证书、域名等产品,可选数据中心包括俄罗斯、法国、荷兰、美国、新加坡、拉脱维亚、捷克、保加利亚等多个国家和地区。我们随便以一个数据中心为例...

香港E3 16G 390元/ 香港E5*2 32G 600元/ 香港站群 4-8C 1200元/ 美国200G高防 900/ 日本100M 700元

3C云国内IDC/ISP资质齐全商家,与香港公司联合运营, 已超6年运营 。本次为大家带来的是双12特惠活动,香港美国日本韩国|高速精品|高防|站群|大带宽等产品齐全,欢迎咨询问价。3C云科技有限公司官方网站:http://www.3cccy.com/客服QQ:937695003网页客服:点击咨询客户QQ交流群:1042709810价目表总览升级内存 60元 8G内存升级硬盘 1T机械 90元 2...

attributeusage为你推荐
mdm.mdm是什么扩展名?一物一码一袋一码和一物一码有什么区别?fclose为什么fclose之后remove还是不成功电子日历怎样调整电子日历上的时间layout_gravityandroid 布局中 为什么能够通过android:layout_above 、android:layout_alignTop 、等 还要在之前加入rownumbersql server 2005中row_number怎么用数秦科技天津数沃科技公司怎么样?待遇和发展如何?有人知道么?booth算法用Booth算法计算-4×3的4位补码乘法运算,要求写出每一步运算过程及运算结果 麻烦详细说明每一步的操作什么是句柄按键精灵的句柄是什么?什么是SOA什么是中子刀?您了解吗?
网易域名邮箱 免费动态域名 国内永久免费云服务器 美国仿牌空间 大容量存储器 南通服务器 免费申请网站 国外免费asp空间 卡巴斯基免费试用版 联通网站 视频服务器是什么 服务器防火墙 免费蓝钻 工信部icp备案查询 国外免费云空间 apnic 睿云 umax 好看的空间 godaddy退款 更多