Duncan Edwards Jones Ответов: 1

Make codeattributeargument Code generation use a : in C#


У меня есть код для генерации кода, который включает в себя генерацию атрибутов с параметрами.

Код, например,:
Public Shared Function ParameterisedAttribute(ByVal AttributeName As String,
                                              ByVal parameters As IList(Of CodeAttributeArgument)
                                              ) As CodeAttributeDeclaration



    If parameters IsNot Nothing Then
        Return New CodeAttributeDeclaration(AttributeName, parameters.ToArray())
    Else
        Return New CodeAttributeDeclaration(AttributeName)
    End If


End Function


Но если я кодирую это в код C#, он неправильно использует знак равенства вместо двоеточия для имени параметра, например

[CQRSAzure.EventSourcing.DomainNameAttribute(domainNameIn="Accounts")]


который должен быть

[CQRSAzure.EventSourcing.DomainNameAttribute(domainNameIn:"Accounts")]


Что я уже пробовал:

Код, как и выше... никаких других идей.

1 Ответов

Рейтинг:
6

#realJSOP

Я никогда не видел двоеточия, используемого в качестве оператора в атрибуте (это еще одна бесполезная новая функция в последней итерации C#?), но знак равенства определенно действителен, и если предположить, что остальная часть ссылки на атрибут также действительна, она должна компилироваться без проблем.


Duncan Edwards Jones

Странно, но это определенно требует двоеточия в VS2015 / .NET 4.6.2
Если я наведу на него курсор, то будет предложено имя параметра,но он вставит двоеточие.

Должен поднять отчет о дефекте С MS

#realJSOP

Попробуйте изменить целевой фреймворк в проекте, используя атрибут 4.5, и посмотрите, хочет ли он по-прежнему двоеточие.

Duncan Edwards Jones

Да-даже 4.0 требует двоеточия для именованного аргумента - https://msdn.microsoft.com/en-us/library/dd264739.aspx

murat_eraydin

Я пытаюсь связаться с вами по поводу возможности, не могли бы вы как-нибудь связаться со мной? мерайдин в karmasis com (я не уверен, что CP позволит это)