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[] также будет доступно только для чтения.



Есть ли обходной путь для этого?

587   2  

2 ответов:

Это невозможно и никогда не будет возможным, потому что [Attributes] компилируются как метаданные, а static переменные инициализируются во время выполнения, и, конечно, первые не могут получить доступ к последним (кроме как через отражение).

Если Стандарт

public const string MyGuid = "blah";

Не будет работать на вас, тогда AFAIK единственный способ достичь того, что вы хотите, - это размышление.

К сожалению, нет хорошего способа передать Guid в атрибут. Единственным обходным путем было бы использовать другой тип для этого и преобразовать его в Guid.

Comments

    Ничего не найдено.