问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c# DllImport是什么,属性,方法,类

发布网友 发布时间:2022-04-07 20:28

我来回答

2个回答

懂视网 时间:2022-04-08 00:50

FileAccess枚举

标签:

热心网友 时间:2022-04-07 21:58

您好,

类似DllImport的称为“属性类”,但这个“属性”不同于类的“属性”,.Net中有很多类似的属性类,他们中有一部分用于向编译器提供信息,例如STAThreadAttribute(说明应用程序的 COM 线程模型是单线程单元,一般出现在Main方法前)或FlagsAttribute(用在枚举上,说明该枚举可以进行按位运算);另外一部分用于提供指定的功能,如您提到的DllImportAttribute类(说明该方法是存在于非托管动态链接库中的);还有一些是提供指定的功能,如ComVisibleAttribute(表示程序集中的托管类型对COM是可见的,这个属性类一般出现在AssemblyInfo.cs文件中;另外还有一类就是用户自定义的属性类。

举几个例子:

您在VS2005中新建一个程序,然后双击Program.cs,可以看到下面的语句:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Frmmain());
}
那个[STAThread]就是STAThreadAttribute,它说明我们的程序是COM单线程模型,这个属性很常见。

您可以在AssemblyInfo.cs中看到如下语句:

[assembly: ComVisible(false)]

这个就是ComVisibleAttribute,它说明您的程序中的托管资源对COM不可见(粗略地说也就是说在COM中看不到,无法调用您程序中的方法或使用您程序中的资源)

DllImport太常见了,所有的PInvoke(Platform Invoke,平台调用)都要用到。

至于下面这段代码:
private void button1_Click(object sender, EventArgs e)
{
FileStream fs = File.Open("a.txt", FileMode.Open, FileAccess.Read | FileAccess.Write);
StreamReader reader = new StreamReader(fs);
this.richTextBox1.Text = reader.ReadToEnd();
}
您也许已经看明白,它打开了一个文件,然后把内容读到了RichTextBox中,关键在这里:FileAccess.Read | FileAccess.Write,为什么可以使用“|”位“或”操作符呢?察看一下MSDN就明白了:
[SerializableAttribute]
[FlagsAttribute]
[ComVisibleAttribute(true)]
public enum FileAccess
FileAccess枚举有[FlagsAttribute]属性,因此它的值可以执行位操作,像上面的FileAccess.Read | FileAccess.Write表示“读取或写入”。

类似的东西在.NET中有很多,您可以在MSDN搜索“System.Attribute”,这个类是.NET中属性类的基类,您在搜索到的内容中选择“有关Attribute类”,然后在下面的“继承层次结构”中点击“派生类”,就可以看到Attribute类的子类,有很多。

总的说来,属性类都是类,他们可以修饰方法、字段、枚举、数组甚至整个程序集,他们的使用不必显式调用构造函数,但他们很多都是包括了属性、方法、构造函数的类。

可以通过反射在运行时查找属性类和它的值,比如您可以用属性在程序中保存版本更新信息。

希望这些信息对您有帮助。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
人大政协辅助岗是什么 政务辅助人员是干什么 政府辅助人员是什么 努比亚的海拔什么意思 北非努比亚现在怎么样了啊 相邻权的相关法律 梦见老公离世了什么预兆 梦见自己老公走掉 你出轨后 怎么操作才没被发现? 评评怎么造句 做豆腐皮一天有八百多张,一张卖1.5元,一个月下来大概赚多少钱? 初二周记600字《灯》 谁有初二的600字周记啊? 普通摩托车违章查询 对男人的控制欲太强了该怎么办 觉得男朋友控制欲太强,而且心理有些扭曲。 男人的控制欲为什么那么强? 男人控制欲强是不是正常的 男人控制欲很强是心理问题吗 一个男人控制欲强的表现 男的控制欲强的表现 一个男人的控制欲很强怎么办 男友控制欲强,对我到底是真爱还是自私? 男生控制欲强是出于爱吗? 男生对一个女生产生了强烈的占有欲和控制欲,是什么原因? 男朋友为什么对女朋友控制欲那 么强? 男生对一个女生产生强烈的占有欲和控制欲,是什么原因? 怎么查中国银行银行卡收支明细 怎么分辨出一台激光打标机的功率 如果要在上海来福士门口举办活动如何去*报备?书面申请报告如何书写? 一张豆腐皮的利润是多少啊 做豆制品的利润是多少? 我想投资豆制品加工行业,一天加工黄豆4吨的利润有多少? 豆腐皮利润怎样 自己做的豆腐干卖出去利润大吗? 谢徵读音 谢徵的徵字怎么读 《答谢中书书》主要内容 谁知道谢徵与谢灵运的关系(都是南朝的) 答谢中书书的意思?抒发了作者怎样的思想感情? 答谢中书书是谁写的是那个朝代的 答谢中书书的书是啥意思 谢中书又名谢徵 徵字读音 答谢中书书原文 《答谢中书书》的课下注释!!(要书上的,我的书没带回来) 答谢中书书全文表达了作者怎样的思想感情 猪骨头烩酸菜怎么做好吃 答谢中书书的第二个书是什么意思 猪骨头能做什么食品 晓雾将歇,猿鸟乱鸣,夕日欲颓,沉鳞竞跃。翻译意思? 我有两个微信软件不小心把第二个删除掉了,我怎么下载