相关疑难解决方法(0)

深度克隆对象

我想做的事情如下:

MyObject myObj = GetMyObj(); // Create and fill a new object
MyObject newObj = myObj.Clone();
Run Code Online (Sandbox Code Playgroud)

然后更改未在原始对象中反映的新对象.

我不经常需要这个功能,所以当有必要的时候,我已经使用了创建一个新对象然后单独复制每个属性,但它总是让我觉得有更好或更优雅的处理方式情况.

如何克隆或深度复制对象,以便可以修改克隆对象而不会在原始对象中反映任何更改?

.net c# clone

2135
推荐指数
34
解决办法
77万
查看次数

如何使用AutoMapper深度克隆包含IList属性的对象

我正在尝试使用AutoMapper深度克隆以下类:

public class MainData
{
    public MainData()
    {
        Details = new List<Detail>();
    }

    public int Id { get; private set; }
    public DateTime LastUpdate { get; private set; }
    public IList<Detail> Details { get; private set; }
    public int Prop1 { get; set; }
    public int Prop2 { get; set; }

    public void AddDetail(Detail detail)
    {
        Details.Add(detail);
    }

    public void RemoveDetail(Detail detail)
    {
        Details.Remove(detail);
    }

    public MainData Clone()
    {
        Mapper.Reset();
        Mapper.CreateMap<MainData, MainData>().ForMember(d => d.Id, o => o.Ignore());
        // Mapper.CreateMap<Detail, Detail>().ForMember(d …
Run Code Online (Sandbox Code Playgroud)

c# clone list automapper valueinjecter

13
推荐指数
2
解决办法
5817
查看次数

NHibernate:我如何XmlSerialize一个ISet <T>?

鉴于:

问题:

  • 我不能XmlSerialize ISet属性.

我收到如下错误:

无法序列化成员[namespace].[entity].[property]类型为Iesi.Collections.Generic.ISet`1 [[namespace].[entity],[assembly],Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]因为它是一个接口.

  • 我会坦然承认:我对NHibernate很新.
    • 所以我不知道我的选择是什么.
  • 相信我需要使用一个集合而不是一个包,因为我的集合包含唯一的项目.
  • 当我将ISet属性转换为HashedTable属性(即具体类)时,我得到如下错误:

您必须在Iesi.Collections.Generic.HashedSet`1 [[namespace].[entity],[assembly],Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]上实现默认访问器,因为它继承自ICollection.

我的问题:

  • 我应该怎么做来弥补这种情况?
    • 我应该在所有实体类中实现默认访问器吗?
      • 如果是这样,是否有推荐的模式?

作为旁注,我试着谷歌寻求帮助.
- 我不认为这是一个新问题.

nhibernate asp.net-mvc xml-serialization

5
推荐指数
1
解决办法
5171
查看次数