[nem-en] accessor macro question
mei
mei at work.email.ne.jp
Sat May 27 10:33:40 CEST 2006
I have a question.
-- sample.n
public class Foo {
mutable _bar : string;
public Bar : string {
get { _bar }
set { _bar = value; }
}
}
--
-- sample.cs
public class Foo {
string _bar;
public string Bar {
get { return _bar; }
set { _bar = value; }
}
}
--
sample.n and sample.cs are same?
compiled sample.n and disassemble it.
result of Bar property is
.property string Bar(string)
{
.get instance string Foo::get_Bar()
.set instance void Foo::set_Bar(string)
} // end of property Foo::Bar
but sample.cs is
.property instance string Bar()
{
.get instance string Foo::get_Bar()
.set instance void Foo::set_Bar(string)
} // end of property Foo::Bar
Bar parameter is different.
Why?
Kamil Skalski wrote:
> When I compile and dissasemble this program I get:
>
> .class public auto ansi Foo
> extends [mscorlib]System.Object
> {
> .field private string _bar
> .method public hidebysig specialname rtspecialname
> instance void .ctor() cil managed
> {
> // Code size 7 (0x7)
> .maxstack 2
> IL_0000: ldarg.0
> IL_0001: call instance void [mscorlib]System.Object::.ctor()
> IL_0006: ret
> } // end of method Foo::.ctor
>
> .method public hidebysig specialname instance string
> get_Bar() cil managed
> {
> // Code size 7 (0x7)
> .maxstack 1
> IL_0000: ldarg.0
> IL_0001: ldfld string Foo::_bar
> IL_0006: ret
> } // end of method Foo::get_Bar
>
> .method public hidebysig specialname instance void
> set_Bar(string 'value') cil managed
> {
> // Code size 8 (0x8)
> .maxstack 2
> IL_0000: ldarg.0
> IL_0001: ldarg.1
> IL_0002: stfld string Foo::_bar
> IL_0007: ret
> } // end of method Foo::set_Bar
>
> .property string Bar(string)
> {
> .get instance string Foo::get_Bar()
> .set instance void Foo::set_Bar(string)
> } // end of property Foo::Bar
> } // end of class Foo
>
>
> I'm not sure how did you get the code you mentioned, but it must be
> some mistake...
>
> 2006/5/27, mei <mei at work.email.ne.jp>:
>> Hi,
>>
>> I want to know about accessor macro.
>>
>> -- sample.n
>> using System;
>> using System.IO;
>> using Nemerle.Utility;
>>
>> public class Foo {
>> [Accessor(flags=WantSetter)] mutable _bar : string;
>> }
>> --
>>
>> compiled sample.n to dll(assembly) and use from C#.
>> but error CS1545 occurred.
>>
>> then, I disassemble the compiled asseimbly by Reflector.
>>
>> --
>> public class Foo
>> {
>> // Methods
>> public Foo();
>>
>> // Properties
>> public string this[string] { get; set; }
>>
>> // Fields
>> private string _bar;
>> }
>> --
>> there is indexer, but Bar property is not exists.
>>
>> Please give me instructions for using the accessor macro.
>>
>>
>> Thanks.
>>
>> --
>> akiramei <mei at work.email.ne.jp>
>>
>> _______________________________________________
>> https://nemerle.org/mailman/listinfo/devel-en
>>
>
>
--
mei <mei at work.email.ne.jp>
More information about the devel-en
mailing list