C# 将方法转换为getter

C# 将方法转换为getter,c#,generics,C#,Generics,我有一个泛型方法(在非泛型类中)返回元素 public IEnumerable<T> GetElements<T>() where T : class { foreach (Element element in elements) { if (element is T) { yield return element as T;

我有一个泛型方法(在非泛型类中)返回元素

    public IEnumerable<T> GetElements<T>() where T : class
    {
        foreach (Element element in elements)
        {
            if (element is T)
            {
                yield return element as T;
            }
        }
    }
public IEnumerable GetElements(),其中T:class
{
foreach(元素中的元素)
{
if(元素为T)
{
将返回元素作为T;
}
}
}
我想在getter方法中转换这个函数,并尝试了如下方法

    public IEnumerable<T> Elements<T>
    {
        get
        {
            foreach (Element element in elements)
            {
                if (element is T)
                {
                    yield return element as T;
                }
            }
        }
    }
公共IEnumerable元素
{
得到
{
foreach(元素中的元素)
{
if(元素为T)
{
将返回元素作为T;
}
}
}
}
这不会编译:
(预期为

有人知道这里有什么问题吗


谢谢,属性不支持常规参数


实现这一点的唯一方法是为封装类型提供泛型类型参数。

请参见。基本上,非泛型类中不能有泛型属性。确切地说。基本上,编译器正在读取行
public IEnumerable Elements
,并认为因为存在泛型类型参数,它必须是一个方法,然后查找
),当然找不到,因为您希望它是一个属性。