C#: статический Guid в качестве аргумента атрибута
Как я могу использовать статический Guid в качестве аргумента в атрибуте?
static class X
{
public static readonly Guid XyId = new Guid("---");
}
[MyAttribute(X.XyId)] // does not work
public class myClass
{
}
Это не работает, потому что Guid должен быть только для чтения, он не может быть const. Представление string и byte[] также будет доступно только для чтения.
Есть ли обходной путь для этого?
2 ответов:
Это невозможно и никогда не будет возможным, потому что
[Attributes]компилируются как метаданные, аstaticпеременные инициализируются во время выполнения, и, конечно, первые не могут получить доступ к последним (кроме как через отражение).Если Стандарт
public const string MyGuid = "blah";Не будет работать на вас, тогда AFAIK единственный способ достичь того, что вы хотите, - это размышление.
К сожалению, нет хорошего способа передать Guid в атрибут. Единственным обходным путем было бы использовать другой тип для этого и преобразовать его в Guid.
Comments