我需要什么语法才能使C#通用属性访问器方法具有与其类型相同的名称?

时间:2019-01-15 21:49:48

标签: c# generics properties accessor

在C#中,我喜欢实现属性get / set方法,该方法的 name 与返回/应用的 type 的名称相同。这很适合我,因为这意味着我不必为该方法设计自己的新名称。例如:

class MyClass
{
    public XmlDocument XmlDocument { get; set: }
    ...

我的问题是-当MyClass是泛型类时,我将如何表达以上内容?我已经尝试过了:

class MyClass<T>
{
    public T T { get; set; }
    ...

但是C#编译器会引发错误:

  

错误CS0102类型“ MyClass”已经包含以下内容的定义:   'T'

我也尝试使用nameof(T)@T指定方法的名称,但是它们引发了不同的编译器错误。

我想做的甚至是可能的吗?如果是,该属性访问器的名称应使用什么语法?

1 个答案:

答案 0 :(得分:0)

否,无法将泛型方法/属性的名称基于指定为参数的类型。

您可以在运行时使用模板(如t4)或代码生成此类。

注意:

  • 如果可能的话,将很难使用这种通用类型,因为在编译时将不知道方法名称,或者再次取决于手头的类型
  • 当属性名称与类型相同时,通常会引起很多混乱。