How can I use a static Guid as argument in an attribute?
static class X
{
public static readonly Guid XyId = new Guid("---");
}
[MyAttribute(X.XyId)] // does not work
public class myClass
{
}
It does not work because Guid must be readonly, it can not be const. The string and byte[] representation would also be readonly.
Is there any workaround for this?
It’s not possible and never will be possible (barring significant changes to the .NET runtime), because
[Attributes]are compiled as metadata andstaticvariables are initialized at runtime, and of course the former cannot access the latter (except via Reflection).If the standard
won’t work for you, then AFAIK the only way to achieve what you want, is with Reflection.