我想要做這樣的事情:通用t若要調用重載函數
public class Object1 {
public int number{get;set;}
}
public class Object2 {
public int number{get;set;}
}
public class Object3 {
public int number{get;set;}
}
main();
public void main(){
var objects1 = new List<Object1>{new Object1{number=1} , new Object1{number=2}};
test<Object1>(objects1);
}
public List<Object3> test<T>(IEnumerable<T> objs){
var rv = new List<Object3>();
foreach (var o in objs)
{
var foo = overloaded(o);
rv.Add(foo);
}
return rv;
}
public Object3 overloaded(Object1 obj){
// Run very specific things to Object1
return new Object3{number=obj.number+1};
}
public Object3 overloaded(Object2 obj){
// Run very specific things to Object2
return new Object3{number=obj.number+2};
}
您可以直接運行/這裏編輯代碼,錯誤處理: http://csharppad.com/gist/6ff5f13cac8f0e5735be
我得到的錯誤是Argument 1: cannot convert from 'T' to 'Object1'
- 那我該怎麼做?這個想法是,Object1和Object2有95%的代碼完全相同,最後5%我需要讓它爲每個代碼做一些特定的事情。
我所得到的'關鍵字「這個」不可在當前context' – ParoX
對不起,請編輯 –
這就是我想你的意思,但現在我得到'提交#0.overloaded(Submission#0.Object1)'的最佳重載方法匹配'有一些無效參數' – ParoX