Как установить различные атрибуты на геттеры и сеттеры в F #? - PullRequest
2 голосов
/ 11 сентября 2009

В C # это нормально работает:

class A : System.Attribute { public A() {} }

public class B
{
    public int X
    {
        [A] get { return 1; }
        [A] set { }
    }
}

Но в F #, когда я пытаюсь установить атрибуты для методов получения и установки свойств, я не могу обойти синтаксическую ошибку:

type A() = inherit System.Attribute()

type B = 
    member this.X 
        with [<A>] get () = 1
        and  [<A>] set (x : int) = ()

Есть ли способ сделать это?

Моя цель - установить различные атрибуты для геттеров и сеттеров.

Ответы [ 2 ]

2 голосов
/ 11 сентября 2009

В MSDN-документации предлагается следующее:

type A() = inherit System.Attribute()

type B =     
    [<A>]
    member this.X with get () = 1
    [<A>]
    member this.X with set (x : int) = ()

... но согласно .Net Reflector , похоже, он не производит ожидаемый IL. Выглядит как ошибка для меня.

Редактировать: Или ошибка в .Net Reflector ...

Редактировать 2: Отчет об ошибке отправлен по адресу fsbugs@microsoft.com

1 голос
/ 15 сентября 2009

Для протокола, ответ от команды F # был:

Прямо сейчас (а также в предстоящем Beta2), свойство таргетинга атрибутов геттеры и сеттеры конкретно не поддерживается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...