c# - 如何用具有几乎相同结构的另一个对象填充对象?
问题描述
我试图找到最好的方法来用另一个结构几乎相同的构造函数填充我的构造函数,而无需设置每个属性,
所以我在构造函数Altridatiidentificativi
中有构造ModelRA
函数:
public class Altridatiidentificativi
{
public string denominazione { get; set; }
public string indirizzo { get; set; }
public string numeroCivico { get; set; }
public string cap { get; set; }
public string comune { get; set; }
public string provincia { get; set; }
public string nazione { get; set; }
public bool modificati { get; set; }
public string defAliquotaIVA { get; set; }
public bool nuovoUtente { get; set; }
}
并Altridatiidentificativi
在Documenti
:
public class Altridatiidentificativi
{
public bool nuovoUtente { get; set; }
public string denominazione { get; set; }
public string indirizzo { get; set; }
public string numeroCivico { get; set; }
public string cap { get; set; }
public string comune { get; set; }
public string provincia { get; set; }
public string nazione { get; set; }
}
正如你所看到的结构几乎相同,只是构造函数ModelRA
有这两个额外的modificati
和defAliquotaIVA
所以我想知道是否有可能以某种方式传递到内部ModelRA.Altridatiidentificativi
,Documenti.Altridatiidentificativi
然后将值添加到额外的
我试图做这样的事情:
public ModelRA initializeRA(Documento documento)
{
ModelRA model = new ModelRA();
model.altriDatiIdentificativi = <Altridatiidentificativi>(documento.altriDatiIdentificativi);
model.altriDatiIdentificativi.defAliquotaIVA = "";
model.altriDatiIdentificativi.modificati = false;
return model;
}
但我在<Altridatiidentificativi>
“它是特定上下文中不是有效构造函数的类型”中出现错误
有没有办法达到我想要做的事情,或者我必须手动设置所有属性?
解决方案
通常这种模式是一个信号,表明您的业务模型中有一个需要抽象为可组合模式的概念。该类ModelRA.Altridatiidentificativi
可能如下所示:
public class Altridatiidentificativi
{
public ModelRA.Altridatiidentificativi ModelRAAltridatiidentificativi { get; set; }
public bool modificati { get; set; }
public string defAliquotaIVA { get; set; }
}
然后您的初始化代码可能如下所示:
public ModelRA initializeRA(Documento documento)
{
ModelRA model = new ModelRA();
model.altriDatiIdentificativi.ModelRAAltridatiidentificativi = documento;
model.altriDatiIdentificativi.defAliquotaIVA = "";
model.altriDatiIdentificativi.modificati = false;
return model;
}
切切地我应该提到,使用属性初始化器和构造器通常是一种好习惯,除非您有特定的原因需要初始化方法。
public class Altridatiidentificativi
{
public string ModelRA.Altridatiidentificativi ModelRAAltridatiidentificativi { get; set; }
public bool modificati { get; set; } = false; // unnecessary: this is default.
public string defAliquotaIVA { get; set; } = "";
public Altridatiidentificativi(ModelRA.Altridatiidentificativi modelRAAltridatiidentificativi)
{
this.modelRAAltridatiidentificativi = ModelRAAltridatiidentificativi;
}
}
推荐阅读
- ruby-on-rails - Ruby on Rails,在 activerecord-import 之后创建多对多关联
- firebase-realtime-database - 在 Xcode 10 中使用 GeoFire 设置用户位置
- java - org.hibernate.service.UnknownServiceException:请求未知服务 [org.hibernate.ogm.service.impl.OgmConfigurationService]
- apache-spark - pyspark - 行的 argmax(双
) 在 1 列内 - python-3.x - cdm 无法将 PyInstaller 识别为命令 - Python 3.7.3
- visual-studio-code - VS Code 中的 Hugo 模板格式
- python - 从 KivyMD 制作 MDTextField 工作正常
- javascript - 无法从 Express Route 查询 MySQL 数据库
- npm - 如何更改“npm 脚本”目录
- xamarin.ios - 使用蓝牙在 iOS 中写入通知描述符值