C#DLL导入属性源代码?

C#DLL导入属性源代码?,c#,attributes,dllimport,C#,Attributes,Dllimport,有人知道如何在C#中创建一个可用于外部函数的属性吗 我需要编写一个属性来导入共享对象(这不适用于windows,我正在用C#开发一个内核,使用一个名为Cosmos的项目,我最近完成了我的ELF32加载程序和动态链接器,并编写了一个属性来实现这一点) 我以前从未真正编写过自己的属性,但我查阅了一些教程,没有找到任何与外部方法相关的内容。我假设它返回某种排序函数指针。假设您的SOImport属性的功能与DllImport属性类似,您将无法使用它。Cosmos不支持任何P/Invoke操作。Cosmo

有人知道如何在C#中创建一个可用于外部函数的属性吗

我需要编写一个属性来导入共享对象(这不适用于windows,我正在用C#开发一个内核,使用一个名为Cosmos的项目,我最近完成了我的ELF32加载程序和动态链接器,并编写了一个属性来实现这一点)


我以前从未真正编写过自己的属性,但我查阅了一些教程,没有找到任何与外部方法相关的内容。我假设它返回某种排序函数指针。

假设您的
SOImport
属性的功能与
DllImport
属性类似,您将无法使用它。Cosmos不支持任何P/Invoke操作。Cosmos操作系统中使用的任何东西都必须用.NET语言编写,而不是本机编写。

如果您的
SOImport
属性的功能与
DllImport
属性类似,您将无法使用它。Cosmos不支持任何P/Invoke操作。Cosmos操作系统中使用的任何东西都必须用.NET语言编写,而不是本机编写。

我很确定您需要自己的编译器。DLLImport是用C#编写的,它不是该语言的“内置”。@user1454902,DLLImport属性确实可能是用C#编写的,但它本身没有任何功能,只是元数据。编译器使用它来发出正确的编组代码。@ThomasLevesque:事实上,我怀疑这种情况发生在CLR中。@SLaks似乎就是这样。。生成的IL除了用
pinvokeimpl
标记它们之外,没有做任何特别的事情。有趣的东西!:)我很确定您需要自己的编译器。DLLImport是用C#编写的,它不是该语言的“内置”。@user1454902,DLLImport属性确实可能是用C#编写的,但它本身不做任何事情,它只是元数据。编译器使用它来发出正确的编组代码。@ThomasLevesque:事实上,我怀疑这种情况发生在CLR中。@SLaks似乎就是这样。。生成的IL除了用
pinvokeimpl
标记它们之外,没有做任何特别的事情。有趣的东西!:)
[SOImport("/lib/screen.so")]
extern void print(string text);