给定以下类定义:
public class BaseClass
{
public string SomeProp1 { get; set; }
}
public class DerivedClass : BaseClass
{
public string SomeProp2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能List<BaseClass>把它转换成一个List<DerivedClass>?
在我的真实世界场景中BaseClass有一大堆属性,我不想一个接一个地复制(然后记得在添加额外属性时进行维护).
添加参数化构造函数BaseClass不是一个选项,因为此类由WCF服务引用定义.
有没有人想要一个允许我通过值.Net对象克隆的框架/类?我只对公共读/写属性(即DataContracts)感兴趣,我不关心引用是否正确解析(即包含两次相同项目实例的集合).
我尝试了序列化技巧DataContractSerializer(序列化为XML并返回),编写基于反射的克隆类(有时更快/有时更慢),并且想知道是否有人编写了一个辅助类,可以通过Emit而不是反射来完成.至于现在发射的IL对我的小脑子来说有点大,但我想这将是最终的解决方案.除非有人知道比DataContractSerializer更快的替代方法.
我想复制一个对象列表,但我不断获得对象之间的引用.
List<MyClass> copy = original;
Run Code Online (Sandbox Code Playgroud)
当我更改副本列表中的值时,原始列表也会被修改.有办法解决它吗?
以下是我的课
public Class Test
{
int id {get;set;}
string name {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我正在创建此类的对象并分配值.
var obj = new Test();
obj.id = 1;
obj.name = "test";
var newobj = obj;
newobj.name ="NewTest";
Run Code Online (Sandbox Code Playgroud)
以下是输出
Console.WriteLine(obj.name); //NewTest
Console.WriteLine(newobj.name); //NewTest
Run Code Online (Sandbox Code Playgroud)
当我改变新obj中存在的属性的值时,为什么obj的值正在改变.我知道它的解决方案,我不知道为什么我找不到.如果我在newobj中更改了值,我不希望obj的值被更改.