Интероп вариантов в C#
От: hardcase Пират http://nemerle.org
Дата: 03.11.10 10:39
Оценка: 27 (2)
В связи с недавним обсуждением о том как плохо выставлять наружу public instance поля, да еще и в камальКейзе именованные предлагаю следующее решение.

На входе имеем:
variant X
{
| Foo { a : string; mutable b : int } 
}



На выходе:
abstract class X
{
    public sealed class Foo : X
    {
       private a : stirng;
       
       [VariantOptionField("a", 0)]
       public A : string { get { a } }

       private mutable b : int;
       
       [VariantOptionField("b", 1)]
       public B : int { get { b } set { b = value } }
       
       public this(a : string, b : int) { this.a = a; this.b = b; }
    }
}


Атрибут VariantOptionField содержит имя поля при объявлении а также его позицию.
Имя свойства генерируется по правилам макроса Accessor: _some____foo_bar -> SomeFooBar.
/* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.