C#:static Guid作为属性的参数

时间:2009-09-18 10:00:50

标签: c# attributes const guid

如何在属性中使用静态Guid作为参数?

static class X
{
  public static readonly Guid XyId = new Guid("---");
}

[MyAttribute(X.XyId)] // does not work
public class myClass
{
}

它不起作用,因为Guid必须是readonly,它不能是const。字符串和byte []表示也是readonly。

有没有解决方法呢?

2 个答案:

答案 0 :(得分:9)

这是不可能的,也永远不可能,因为[Attributes]被编译为元数据而static变量在运行时被初始化,当然前者无法访问后者(除了通过Reflection)。 / p>

如果标准

public const string MyGuid = "blah";

不会对你有用,那么AFAIK是实现你想要的唯一方法,就是反思。

答案 1 :(得分:0)

不幸的是,没有一种好方法可以将Guid传递给属性。 只有解决方法是使用另一种类型并将其转换为Guid。