public class A
{
string data1 = ""; public string Data1
{
get { return data1; }
set { data1 = value; }
} private int data2 = ""; public int Data2
{
get { return data2; }
set { data2 = value; }
}
} public class B:A
{
public B(A a)
{
// 有没有办法在这里快速复制?
this.Data1 = a.Data1;
this.Data2 = a.Data2;
} private string data3 = ""; public string Data3
{
get { return data3; }
set { data3 = value; }
}
}
{
string data1 = ""; public string Data1
{
get { return data1; }
set { data1 = value; }
} private int data2 = ""; public int Data2
{
get { return data2; }
set { data2 = value; }
}
} public class B:A
{
public B(A a)
{
// 有没有办法在这里快速复制?
this.Data1 = a.Data1;
this.Data2 = a.Data2;
} private string data3 = ""; public string Data3
{
get { return data3; }
set { data3 = value; }
}
}
{
public B():base()
{
} private string data3 = ""; public string Data3
{
get { return data3; }
set { data3 = value; }
}
}
算不?
LZ的需求是: 已知父类A的实例a 已知子类的实例b 把a中数据传递给b
{
public B(B b)
{
this.Data1 = b.Data1;
this.Data2 = b.Data2;
}
}同类还得复制,何况父类。
{
this.Data1 = a.Data1;
this.Data2 = a.Data2;
} 我想要的就是简化上面的,因为父类是一系列数据的公共子集,从数据库里获取,子类的数据在数据库的另外一张表里。
在项目里有大量的子类继承自这个父类,在初始化的时候,需要将父类的数据复制到子类类。
{
string data1 = "";
public A(A a){
data1=a.data1;
data2= a.data2;
}
public string Data1
{
get { return data1; }
set { data1 = value; }
} private int data2 = ""; public int Data2
{
get { return data2; }
set { data2 = value; }
}
} public class B:A
{
public B(A a) :base(a)
{
} private string data3 = ""; public string Data3
{
get { return data3; }
set { data3 = value; }
}
}
2、如果只是要用“父类”的数据,这不是继承,而要用包含。
public B
{
A a; // B包含A
public B(A a)
{
this.a = a;
}
}
因为我的定义是:
药品->物品,宝石->物品
物品包含名字,介绍等公共属性。后面的逻辑如果用 输出(药品1.基本.名字);给我的感觉就不如输出(药品1.名字);
{
PrintCopyClass(typeof(Goods), "goods");
} public void PrintCopyClass(Type type, string input)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine(string.Format("public {0}({0} {1})", type.Name, input));
sb.AppendLine("{"); foreach (System.Reflection.PropertyInfo pi in type.GetProperties())
{
sb.AppendLine(string.Format("this.{0} = {1}.{0};", pi.Name, input));
}
sb.AppendLine("}"); Console.WriteLine(sb.ToString());
}简单的做了一个生成复制属性的代码,方便今后代码编写o(∩_∩)o
只要父类写两个函数就可以了
Class A
{
A Clone()//这个函数父类本身产生自己的副本
void Copy(A a)//这个函数父类获取外来的数据
}
然后子类随便调用就可以了,爱怎样获取父类数据就怎样调用,
不用一行一行的为每个变量赋值。