如何在编译时获得泛型参数类型名称



我想实现一个泛型类。它应该有一个带有属性的属性,该属性接受一个编译时常量,我想将其设置为参数类型的名称。像这样:

namespace Example
{
    public class MyGeneric<T>
    {
        [SomeAttribute(CompileTimeConstant)]
        public int MyProperty { get; set; }
        private const string CompileTimeConstant = typeof(T).Name; // error CS0133:
        // The expression being assigned to `Example.MyGeneric<T>.CompileTimeConstant' must be constant
    }
}

但是因为typeof(T).Name是在运行时求值的,所以它不起作用。这可能吗?

我不认为这是使用属性的正确方式。属性用于向类添加特定的特征。它们是您在编译时添加到类中的标记,以便在运行时查询和使用。您正在尝试在运行时添加属性并如何使用它?为什么要使用属性来保存运行时可用的信息?

类型的名称可以很容易地在运行时查询。我认为你应该提供更多的信息,关于你到底想要实现什么,否则我认为使用TypeName属性可能已经足够好了。

相关内容

  • 没有找到相关文章

最新更新