我有两种非常相似的方法。唯一的区别是BindingList
中使用的类型,但我无法弄清楚如何为这两种类型创建泛型方法。我想我必须使用泛型类型来使它工作,但我无法弄明白。这两种类型都有Title
属性。
private int GetObjectIndexFromTitle(string str, BindingList<MyClass1> list)
{
foreach (var item in list)
{
if (item.Title == str)
{
return list.IndexOf(item);
}
}
return -1;
}
而且:
private int GetObjectIndexFromTitle(string str, BindingList<MyClass2> list)
{
foreach (var item in list)
{
if (item.Title == str)
{
return list.IndexOf(item);
}
}
return -1;
}
我查看了Generic Type文档,但由于非常具体的Title
属性,我无法使其工作。我希望得到一些帮助。
答案 0 :(得分:4)
使用以下命令创建界面:
public interface ITitleAware{
string Title { get; }
}
您的课程将实施它:
public MyClass1 : ITitleAware {
//code
}
public MyClass2 : ITitleAware {
//code
}
然后:
private int GetObjectIndexFromTitle(string str, BindingList<ITitleAware> list)
{
foreach (var item in list)
{
if (item.Title == str)
{
return list.IndexOf(item);
}
}
return -1;
}
答案 1 :(得分:-2)
public static class myClass
{
public static int GetObjectIndexFromTitle<T>(T myList, string myString)
{
foreach (var item in myList)
{
if (item.Title == myString)
{
return list.IndexOf(item);
}
}
return -1;
}
}
用法:
myClass.GetObjectIndexFromTitle<myClass1>(myList1, "myString1");
myClass.GetObjectIndexFromTitle<myClass222>(myList2222, "myString222");