我想在 c# 中创建一个通用方法,我想在其中返回一个 View 。
我有以下功能:
public static T findViewById<T>(View parent, int id)
{
return (T) parent.FindViewById(id);
}
但我收到一条错误消息:-
Cannot convert type Android.Views.View to T
知道如何解决这个问题吗?
最佳答案
您的问题是代码过于通用。您根本没有约束 T,所以这些(以及更多)中的任何一个都是允许的:
var views = findViewById<int>(parent, id);
var views = findViewById<String>(parent, id);
var views = findViewById<Form>(parent, id);
views
可以是 int 或 string 或 Form。而且您不能将 View
转换为其中任何一个。
所以基本上,您会收到编译器错误,因为 Android.Views.View
无法转换为所有可能的 T。
要让它工作,你需要给T添加一个约束来限制T,让它只会是Android.Views.View
public static T findViewById<T>(View parent, int id)
where T : Android.Views.Views
{
return (T) parent.FindViewById(id);
}
关于c# - C# 中的泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20563629/