我有如下通用方法,我想将 T 限制为仅 Guid 类型,如下所示:
public static EntityFindApiResponse EntityFind<T>(
Credential cred, EntitiesApiClient entitiesApiClient, string clrType,
string propertyName, T searchKey)
where T: Guid
{
// ...
}
编译器告诉我
“System.Guid”不是有效的约束。用作约束的类型必须是接口、非密封类或类型参数。
那么,为什么这不起作用呢?
首先,事实证明Guid
is a struct
。您不能将通用约束设置为struct
因为struct
s 不能派生自(意味着您不能从struct
).
更进一步说where T: Guid
真正读作“其中 T 的类型Guid
或派生自的类型Guid
“并且由于没有任何东西可以从struct
,这就像说“其中 T 属于 Guid 类型”,这从一开始就违背了泛型的目的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)