c# - 如何使用 c#.net 将基类的实例复制到派生类基

标签 c#

我遇到需要将基类成员复制到派生类的情况。 我有一个由其他服务返回的基类实例,我们用作其他类的基类的是同一个类。

当我们创建派生类的对象时,我想将已经创建的基类实例分配给派生类,我知道我们不能将基类对象分配给派生类,但我仍在寻找任何其他解决方案。 有人有什么想法吗?

示例:

public class VBase 
{
   public string Type {get;set;}
   public string Colour {get;set;}
}

public class Car : VBase 
{
   public string Name {get;set;}
   public int Year {get;set;}
}

//我从其他来源获取的此类实例

VBase mBase= new VBase();  
mBase.Type = "SUV";
mBase.Colour = "Black";

//-------------------------------------------- ----------

Car myCar= new Car();
myCar.Name = "AUDI";
mBase.Year = "2016";

//这里我想将基类的实例复制到派生类,类似这样或任何其他可能的方式。

myCar.base=mBase;

最佳答案

用天真的方式是不可能的。

我想推荐定义构造函数或静态方法。我个人不建议为此工作使用 AutoMapper 等其他库,因为它们可能需要进行一些转换并使代码变得繁琐。

public class Car : VBase 
{
    // Method 1: define constructor.
    public class Car(VBase v) {
        this.Type = v.Type;
        this.Colour = v.Colour;
    }

    // Method 2: static method.
    public static Car FromVBase(VBase v){
        return new Car()
        {
            this.Type = v.Type;
            this.Colour = v.Colour;        
        };
    }

    public string Name {get;set;}
    public int Year {get;set;}
}

关于c# - 如何使用 c#.net 将基类的实例复制到派生类基,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39852835/

相关文章:

c# - 将 IEnumerable<IGrouping<,>> 转换为数组

c# - DateTime 相等和声明导致 ContextSwitchDeadlock

c# - 由于 Web API 中的特殊字符,未设置发布值

c# - 尝试在 .Net5 中发布时出现 Nuget 错误

C# 单例模式在实现并行而不是并发处理后未按预期工作

c# - 无法将泛型类型加载到 ASP.NET 应用程序中的另一个 AppDomain

c# - Microsoft Word if 带有合并字段的语句不起作用

c# - 我们可以使用应用程序域执行批处理文件 (*.bat) 吗?

Java 和 WCF DateTime 的互移植性问题

c# - 为什么 Split from System.String 不接受字符串作为重载?