gpt4 book ai didi

c# - 我可以在 C# 中实现从派生类复制的 'copy constructor' 吗?

转载 作者:行者123 更新时间:2023-11-30 14:36:56 25 4
gpt4 key购买 nike

一个应用程序特定示例来说明我的直接问题:

我有一个元数据提供程序类,它具有以下(简化的)接口(interface):

public class CtsDataAnnotationsModelMetadataProvider : DataAnnotationsModelMetadataProvider
{
protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes, Type containerType, Func<object> modelAccessor, Type modelType, string propertyName)
{
var metadata = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);
return metadata;
}
}

现在我想用额外的属性扩展 ModelMetadata,填充这些属性并返回 ExtendedModelMetadata 的实例。在我的扩展实例中,如何通过 base.CreateMetadata 很好地传达分配给 metadata 实例的属性?我想要但没有的是;

var metadata = (ExtendedModelMetadata)base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);

我可以为 ExtendedModelMetadata 创建一个构造函数,它接受一个 ModelMetadata 参数并将它的所有属性显式分配给正在构造的实例,但我想要一个更通用和较少的硬编码方法。我能做什么?

最佳答案

您可以使用 AutoMapper实现这一目标。

Mapper.CreateMap<ModelMetaData , ExtendedModelMetadata>();

.NET Framework 不提供深层复制功能。

关于c# - 我可以在 C# 中实现从派生类复制的 'copy constructor' 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9923608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com