猿问

如何期望类的属性类型作为泛型函数中的参数?

为简单起见,请使用以下示例,该示例在 C# 中无效:


public void SomeGenericFunc<T>(T classObject, T.Property.Type classPorpertyType)

{

    string propertyName = nameof(classPropertyType);

    // ...

}

示例简单类:


public class Car

{

    public Car(){}


    public int DoorsCount { get; set; }


    public string Color { get; set; }

}

函数调用看起来像这样:


SomeGenericFunc<Car>(new Car(), Car.DoorsCount); //should be valid

SomeGenericFunc<Car>(new Car(), SomeType); //should be invalid at compile time: SomeType is not a property of Car

SomeGenericFunc<Car>(new Car(), Car.Color); //should be valid

显然T.Property.Type,C# 中没有可用的东西。在这个例子中,我不想nameof(Car.DoorsCount)每次调用函数时都通过。我希望nameof()调用发生在SomeGenericFunc<T>(),因此我可以SomeGenericFunc<T>()使用任何类和该类的任何属性进行调用。


那么是否可以在泛型函数中传递和期望类的属性类型?


慕村9548890
浏览 149回答 3
3回答
随时随地看视频慕课网APP
我要回答