csh*_*oob 3 c# casting partial-classes .net-3.5
评论更新:
我需要通过自己的参数扩展linq-to-sql类,并且不想触及任何生成的类.欢迎任何更好的建议.但是如果linq-to-sql类正在改变,我也不想再次进行所有属性赋值.因此,如果vstudio为类生成新属性,我将自己的扩展属性保持独立,并且新的内部来自类本身
原始问题:
我不确定是否可能.我有一辆级轿车和一辆mycar从班级车延伸出来.mycar类也有一个字符串列表.唯一的区别.
如何将现在的任何汽车对象投射到mycar对象,而无需手动分配所有属性.喜欢:
Car car = new Car();
MyCar mcar = (MyCar) car;
Run Code Online (Sandbox Code Playgroud)
要么
MyCar mcar = new MyCar(car);
Run Code Online (Sandbox Code Playgroud)
或者我可以用自己的变量扩展汽车,而不必总是这样做
Car car = new Car();
MyCar mcar = new MyCar();
mcar.name = car.name;
mcar.xyz = car.xyz;
...
Run Code Online (Sandbox Code Playgroud)
谢谢.
cjk*_*cjk 17
在回答您对该问题的评论时,Linq-To-Sql类将生成为partial.这意味着您可以使用声明为partial的相同类名的单独代码文件来添加所需的额外属性.
例如,您的Ling-To-Sql设计器类将是:
public partial class Car
{
.... lots of auto generated stuff ....
}
Run Code Online (Sandbox Code Playgroud)
您可以拥有一个名为Car.cs的独立文件(在同一个项目中):
public partial class Car
{
public MyCustomStuff{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这两个类将合并在一起.只需确保它们位于同一名称空间中.