检查泛型类型的字段

R4D*_*4D4 1 c# generics field

public static int GetResult<TType>(TType aObject) {
    if(aObject.mValue==12)
        return 99;
    return 20;
}
Run Code Online (Sandbox Code Playgroud)

我如何检查TType的字段mValue,我猜测反射可能会进入此,但我不确定如何?

谢谢.

Dar*_*rov 8

当您想要保持强类型和编译时安全性时,泛型非常有用.如果您要求使用Reflection,则无需使用泛型.因此,一种方法是定义包含此属性的接口或基类:

public interface IFoo
{
    int Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后对类型有一个通用约束:

public static int GetResult<TType>(TType aObject) where TType: IFoo
{
    if(aObject.Value == 12)
    {
        return 99;
    }
    return 20;
}
Run Code Online (Sandbox Code Playgroud)