我可以拥有通用的[]属性吗?

mse*_*edi 7 c# generics

我有一个DICOM字典,其中包含一组所有从DataElement派生的对象.字典有一个int作为键,DataElement作为属性.我的DICOM字典包含一个this []属性,我可以在其中访问DataElement,如下所示:

public class DicomDictionary
{
  Dictionary<int, DataElement> myElements = new Dictionary<int, DataElement>();
  .
  .
  public DataElement this[int DataElementTag]
  {
    get
    {
      return myElements[int];
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

现在的一个问题是我有不同的DataElement类型,它们都是从DataElement派生的,比如DataElementSQ,DataElementOB等.我现在想要做的是使C#中的写入更容易:

 public T this<T>[int DataElementTag] where T : DataElement
 {
   get
   {
      return myElements[int];
   }
 }
Run Code Online (Sandbox Code Playgroud)

但这实际上是不可能的.有没有我错过的东西?当然我可以用Getter方法做到这一点,但以这种方式使用它会更好.

Che*_*hen 2

为什么不使用真正的通用方法GetDataElement<T> where T : DataElement呢?C# 不支持通用索引器。为什么您认为在这种情况下索引器比方法更好?