如何将类Type传递给函数以将其强制转换为函数

Say*_*yid 3 c# casting class

在编译时,我不知道我将传递给方法的确切类型,但我确信这种类型将包含一些属性.如何将Type传递给函数以在函数中执行转换?我想得到类似的东西:

foo (classType cl)
{
    int x = ((cl)SomeClass).Id.Value;
}
Run Code Online (Sandbox Code Playgroud)

Cha*_*leh 5

使用.id时,另一个答案将不起作用,因为您的T类型不受约束.该类不知道任何T可以实现一个名为id的字段/属性

想象一下,你使用了

foo <int>()
Run Code Online (Sandbox Code Playgroud)

T将是int,int没有id字段/属性

你可以约束

foo <T>()
  where T : ClassTypeThatImplementsId
{
  int x = ((T)SomeClass).Value;
}
Run Code Online (Sandbox Code Playgroud)

虽然这意味着T只能是那种特定类型.是否有可以使用ID的基类?我不知道这是否是你想要的解决方案......

编辑:

回复你的帖子:

foo <T>()
  where T : BaseClass
{
  int x = ((T)SomeClass).Value;
}
Run Code Online (Sandbox Code Playgroud)

应该假设BaseClass实现'Value'(假设SomeClass来自某个地方,因为在方法中似乎没有引用它!)