c# - 除了名称之外,我将如何处理两个完全相同的类?
问题描述
我正在使用 Core 3.1 编写服务。在我正在编写的服务中,我创建了一个连接到遗留 SOAP 服务的服务,该服务与更旧的系统交互。SOAP 服务提供基本的 CRUD 操作并使用类作为数据容器。问题是为服务引用生成的代码为partial
具有完全相同属性的对象创建了单独的类。
public partial class REQUEST1
{
public string PropertyName {get; set;}
}
public partial class REQUEST2
{
public string PropertyName {get; set;}
}
我发现在准备请求对象方面我一遍又一遍地编写相同的代码。
private void SetProperties(MyClass parameters, REQUEST1 request)
{
request.PropertyName = parameters.MyParamValue;
}
private void SetProperties(MyClass parameters, REQUEST2 request)
{
request.PropertyName = parameters.MyParamValue;
}
我不想修改生成的代码,因为下次生成代码时必须记住要这样做。接口和基类并不是真正的选择,因为它正在修改生成的代码。因此,我正在寻找有关如何编写一种方法的建议,该方法可以采用其中一个类并设置值,而无需编写千篇一律的代码。
更新: 所以这变得更加复杂。在创建/更新服务中,我有复杂的对象。
public partial class ADDRESS
{
// Address Properties created by the service reference
}
public partial class PERSON
{
ADDRESS[] ADDRESSES { get; set;}
// Other properties created by the service reference
}
我可以为地址和人员创建界面,但这会产生另一个问题。
public interface IAddress
{
// Address properties
}
public interface IPerson
{
IAddress[] ADDRESSES {get;set;}
// Other properties
}
public partial class ADDRESS : IAddress
{
}
public partial class PERSON : IPerson
{
}
这会产生一个错误,指出 PERSON 没有实现成员 IAddress[] ADDRESSES,因为它没有正确的返回类型。这是有道理的,但我不知道如何解决它。对于具有原始类型的单个对象,这种方法有效,但对于更复杂的类型,它似乎需要另一种解决方案。
解决方案
我建议使用部分类向类添加接口。
public interface IRequest
{
string PropertyName {get; set;}
}
public partial class REQUEST1
{
public string PropertyName {get; set;}
}
public partial class REQUEST2
{
public string PropertyName {get; set;}
}
public partial class REQUEST1 : IRequest
{
}
public partial class REQUEST2 : IRequest
{
}
你可以有这样的方法
private void SetProperties(MyClass parameters, IRequest request)
{
request.PropertyName = parameters.MyParamValue;
}
推荐阅读
- javascript - 修复 React onDragExit 和 onDrop 事件在 Chrome 中不起作用
- html - 上传的图像未以 Safari 为中心
- reactjs - 错误:未捕获 [不变违规:对象作为 React 子对象无效
- python-3.x - 当我执行“rasa init”错误:“未能安装本机 tensorflow 运行时”
- python - 为什么我在脚本模式下而不是在交互模式下收到语法错误?
- perl - 如何在 PERL 中打印数组引用的值?
- c# - 找不到提供工具箱控件
- xcode - 有没有办法在 Playgrounds 中使用 UIColor(named: "") .colorset 文件?
- ruby-on-rails - 仅显示表格“订单”的一个条目
- class - Xamarin - 必须定义数据库路径