public class SomeClass<TElement>
{
    TElement _element;

    public void SomeFunction()
    {
        _element.Property = someValue;
    }

    public TElement Element
    {
        get
        {
            return _element;
        }
        set
        {
            _element = value;
        }
    }
}


这本质上就是我想要做的。此类中的“ TElement”将始终是从包含“属性”的类继承的类。我希望能够访问“属性”并对其进行修改,并且我希望“ SomeClass”公开类型为“ TElement”的属性。当我尝试执行此操作时,由于“ TElement不包含...的定义”,因此无法访问属性。

如果我不使用“ TElement”,而是直接使用上述类,我将不知道如何使“ Element”属性显示为实例上不同的类型。

我会以错误的方式行事吗?有人能指出我正确的方向来获得这种功能吗?
谢谢

最佳答案

public class SomeClass<TElement>
    where TElement : YourBaseClass
{ ... }


这称为generic type constraint


  在通用类型定义中,where子句用于指定对类型的约束,这些约束可用作通用声明中定义的类型参数的参数

关于c# - 访问属性(property),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31935751/

10-10 15:54