gpt4 book ai didi

c# - 类型转换和工厂模式

转载 作者:太空狗 更新时间:2023-10-29 20:45:48 25 4
gpt4 key购买 nike

我很难弄清楚如何在我尝试创建的 DTO 映射器中实现工厂模式。我很确定我需要重新考虑我的设计。这是我遇到的一个非常小的例子:

    public abstract class Person
{
public string Name { get; set; }
public decimal Salary { get; set; }
}

public class Employee : Person
{
public Employee()
{
this.Salary = 20000;
}

}

public class Pilot : Person
{
public string PilotNumber { get; set; }

public Pilot()
{
this.Salary = 50000;
}
}

public static class PersonFactory
{
public static Person CreatePerson(string typeOfPerson)
{
switch (typeOfPerson)
{
case "Employee":
return new Employee();
case "Pilot":
return new Pilot();
default:
return new Employee();
}
}
}

并使用工厂:

Person thePilot = PersonFactory.CreatePerson("Pilot");
((Pilot)thePilot).PilotNumber = "123ABC";

如何在不将其类型转换为 Pilot 的情况下加载 pilot 编号?这是错误的方法吗?我可以将飞行员号码放在 Person 类中,但 Employee 会继承该号码,这不是我想要的。我能做什么?

谢谢!

- jackson

最佳答案

当对象在实现而非接口(interface)上不同时,最好使用工厂模式。在您的情况下,工厂模式并不太有益,您最好直接创建对象(或者其他一些模式可能更好)。

关于c# - 类型转换和工厂模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3578648/

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