аргумент атрибута должен иметь постоянное значение - пространство имен XmlRoot - PullRequest
1 голос
/ 17 ноября 2010

У меня есть следующий код, который использует структуру для объявления значения const, которое будет использоваться в качестве пространства имен для атрибута XmlRoot, поскольку все мы знаем, что для атрибутов могут быть только значения const.* Это, очевидно, приводит к ошибке 'аргумент атрибута должен быть постоянным значением.У меня вопрос, есть ли способ, которым я могу использовать значение, указанное в web.config, так что пространство имен может быть различным для всех разных сред - DEV, STE, UAT и т. Д.в продвинутом.

1 Ответ

1 голос
/ 17 ноября 2010

Нет, постоянные значения должны присутствовать во время компиляции. Это означает, что значения файла конфигурации никогда не могут быть допустимыми кандидатами на константу в вашем коде.

Вы можете сделать что-то подобное в сочетании с символами DEV, STE и UAT (некрасиво, да, но это будет работать):

public struct Declarations
{
    public const string SchemaVersion_DEV
        = "http://localhost:4304/XMLSchemas/Request.xsd";
    public const string SchemaVersion_STE
        = "http://someotherserver/XMLSchemas/Request.xsd";
    public const string SchemaVersion_UAT
        = "http://anotherserver/XMLSchemas/Request.xsd";
}

#if DEV
[XmlRoot(ElementName = "Header", Namespace = Declarations.SchemaVersion_DEV, IsNullable = false), Serializable]
#elif STE
[XmlRoot(ElementName = "Header", Namespace = Declarations.SchemaVersion_STE, IsNullable = false), Serializable]
#elif UAT
[XmlRoot(ElementName = "Header", Namespace = Declarations.SchemaVersion_UAT, IsNullable = false), Serializable]
#endif
public class RequestHeader { }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...