举个我遇到的例子:entity1,entity2,entity3,.....entityn 都是不同的实体类 entity1 add(entity1 a,entity1b) {return a+b;} entity2 add(entity2 a,entity2 b) {return a+b;} entity3 add(entity3 a,entity3 b) {return a+b;} . . . entityn add(entityn a,entityn b) {return a+b;} 就像这样的一些函数,具有的功能都是一样的,只是类型不一样,多发愁呀
呵呵,这个可以试着这样Object add(Object a, Object b) {return a+b;} 或 Object add(Object a, Object b) { entity ea = (entity)a; entity eb = (entity)b; return ea + eb; }不知道结果会怎么样。
输入:(C++的思想)用IntPtr传递进来,Marshal成相应的类/结构/参数。(Java思想)用Object/ArrayList传递进来,用is判断,然后类型强转。
输出:可以考虑用Object返回,用is 来判断是何种类型。
public void UnZip(string zipFileName, string extractLocation, string password, bool overWrite)
{
#region realization
#endregion
}
public void UnZip(string zipFileName, string extractLocation, string password)
{
this.UnZip(zipFileName, extractLocation, password, true);
}
public void UnZip(string zipFileName, string extractLocation, bool overWrite)
{
this.UnZip(zipFileName, extractLocation, "", overWrite);
}
public void UnZip(string zipFileName, string extractLocation)
{
this.UnZip(zipFileName, extractLocation, "", true) ;
} 4个方法都是一样的,只是参数不同。但是他们只有1个方法真正有逻辑,其它都是调用关系而已。系统写这么多的重构函数,是给调用者的方便而不是给被调用者方便
entity1 add(entity1 a,entity1b)
{return a+b;}
entity2 add(entity2 a,entity2 b)
{return a+b;}
entity3 add(entity3 a,entity3 b)
{return a+b;}
.
.
.
entityn add(entityn a,entityn b)
{return a+b;}
就像这样的一些函数,具有的功能都是一样的,只是类型不一样,多发愁呀
{return a+b;}
或
Object add(Object a, Object b)
{
entity ea = (entity)a;
entity eb = (entity)b;
return ea + eb;
}不知道结果会怎么样。
连类型也省略了,只传值
(说错了别怪呀)
或者从entity1,entity2,entity3,.....entityn抽取出一个基类,将+运算放在基类中。
Fun(params object[] para)
{
}