1

我正在创建一个从 IL(已编译的 C#\VB 代码)到 C 的解释器。我试图在解释它时创建extern属性,我将设置我自己的代码。

例如:

struct String {
    public extern override ValueType Clone( ); //Works but with some warnings.
    public char this[ int index ] {
        extern get;
        //'System.String.this[int].get' must declare a body because it is not marked abstract, extern, or partial
        //The modifier 'extern' is not valid for this item
        extern set; //Didn't work either.
    }
}

我如何制作没有身体的吸气剂和二传手?(顺便说一句,我也不能将其标记为抽象而不会出错。)

我知道这个问题没有用。但对我来说非常。

4

1 回答 1

2

我认为您想建议您的解释器使用替代实现(而不是 IL 使用您的自定义代码)。大多数 CLR 友好的方式是创建您的解释器将读取的属性并相应地使用您自己的一些代码,有点像反向 PInvoke。

struct MyString { 
[WhenRunningInInterpretator(implementationFunction="function42")]
public char this[ int index ] { 
    get {...}  set {....};    } 
} 
于 2012-09-23T00:41:17.823 回答