Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# [JavaFlags]属性的含义是什么?_C#_.net_J# - Fatal编程技术网

C# [JavaFlags]属性的含义是什么?

C# [JavaFlags]属性的含义是什么?,c#,.net,j#,C#,.net,J#,我反编译了一个最初来自J#的DLL。我看到了原始代码中缺少的以下属性: [JavaFlags(0)] public ToolBarButton toolBarButtonProg; [JavaFlags(8)] public static int lastClass; 我看到这些javaflag是在下面的J#名称空间中定义的 namespace com.ms.vjsharp.cor { [AttributeUsage(AttributeTargets.All, AllowMultiple

我反编译了一个最初来自J#的DLL。我看到了原始代码中缺少的以下属性:

[JavaFlags(0)]
public ToolBarButton toolBarButtonProg;

[JavaFlags(8)]
public static int lastClass;
我看到这些javaflag是在下面的J#名称空间中定义的

namespace com.ms.vjsharp.cor
{
  [AttributeUsage(AttributeTargets.All, AllowMultiple = false)]
  public class JavaFlags : Attribute
  {
    public int attr;

    public JavaFlags(int attr)
    {
      this.attr = attr;
    }
  }
}

但是这些属性的用途是什么呢?

这个属性很可能是由J#编译器添加的,用来表示CLR中没有直接表示的Java构造。例如,CLR中没有完全镜像Java中
受保护
修饰符的可见性修饰符,因此编译器在CLR中生成一个
公共
方法以及
[JavaFlags(4)]
属性,因此J#编译器知道在编译其他Java代码时将方法视为受保护的。

据我所知,这不是内置的。您是否尝试反编译并查看定义了
JavaFlagsAttribute
的位置。@请查看我的编辑。如果您找到该属性的反映位置(反映代码查找该属性的内容),您将能够找到它的含义。没有办法从代码中分辨出来。我很感激,但属性只是用于反射的元数据。如果你能找到在代码中反映出来的关于这个属性的信息,你就可以看到属性值是用来做什么的——除此之外,没有办法知道。