我有以下代码:
public Component GetComponent(Type type)
{
return Components.FirstOrDefault(component => component.GetType() == type);
}
调用者必须做一个讨厌的强制转换来获取它传入的组件 - 如何将其重写为无投射通用?
答案 0 :(得分:3)
如果我正确地阅读了你的问题,你可以在功能中移动演员并以这种方式进行。
public T GetComponent<T>() where T : Component
{
return (T)Components.FirstOrDefault(c => c.GetType() == typeof(T));
}
如果在编译时不知道该类型进入该函数(比如说,GetComponet()
在一个循环中调用,其中类型作为参数传入),则无法获得强类型反对。
答案 1 :(得分:0)
public Component GetComponent<T>() where T : Component{
var type = typeof(T);
return Components.FirstOrDefault(c => c.GetType() == type);
}