不太确定如何用单线解释它,但这是我的情况。如何在现有类中添加类<T>的通用属性<T>
我有所谓的“新政”,它有一个属性它是一类“清单”
的抽象基类现在的交易可以是现金,金融,租赁,批发或租到 - 拥有这就是为什么它是交易类型。这也是抽象的,因为每种交易类型都有一些不适用于其他交易的属性,但它们都具有一组共享,因此各种交易类型(即金融,租赁等)从基本交易中继承并具有他们自己添加的方法和属性。
另一个抽象类“库存”也是如此。库存可以是汽车,卡车,小船,房车等),所以我有一类库存。
这里的问题:
协约必须包含一个单位库存。例如,您为一辆汽车融资或租赁一辆房车,然后您与库存类型的库存房产或任何情况下进行交易。
当我创建Deal类并且像SoldUnit一样向类型Inventory中添加属性时,T将继承Deal类。如何在Deal类中创建类型为Inventory的通用属性?
由于可能性的数量,交易并不会真正起作用,所以我如何制作一个通用的“SoldUnit”属性来引用Deal类中的库存类?同时保持严格的打字?我知道我可以用一种对象或动态方式创建一个名为SoldUnit的属性,但有没有更好的方法?
谢谢!
编辑:
对不起,这里是代码的摘录:它不工作,因为T型已经是一个交易类型,但它的两个属性[ret.Vehicle = new Car();
和ret.SoldUnit = new Car();
]我试图填充在Get()方法中使用特定的库存类型(汽车,卡车,rv,船等)。特定的库存类型由数据库字段中的标志确定。
再次感谢!
public abstract class Deal<T>
{
public string Uid { get; set; } = Guid.NewGuid().ToString();
public DealTypes DealType { get; set; } = DealTypes.Finance;
public Buyer Customer { get; set; }
public Inventory<T> Vehicle { get; set; }
public Location Location { get; set; }
public Inventory<T> SoldUnit { get; set; }
public abstract T Add(string id);
public abstract T Update(string id);
public abstract T Get(string id);
}
public abstract class Inventory<T>
{
public string Uid { get; internal set; } = Guid.NewGuid().ToString();
public Location Location { get; set; }
public string StockNumber { get; set; } = "";
}
public class Cash : Deal<Cash>
{
public decimal TradeAllowance { get; set; }
public decimal TradePayoff { get; set; }
public decimal TotalDown { get; set; }
public decimal DueOnDelivery { get; set; }
public override Cash Get(string id)
{
var ret = new Cash();
ret.Customer = new Buyer();
ret.Vehicle = new Car();
ret.Location = new Location();
ret.SoldUnit = new Car();
}
}
public class Car : Inventory<Car>
{
public decimal GrossWeight { get; set; }
public decimal NetWeight { get; set; }
public string Branded { get; set; } = "";
public string FuelType { get; set; } = "";
public string Trim { get; set; } = "";
public string Body { get; set; } = "";
public int Cylinders { get; set; }
public decimal EngineSize { get; set; }
public string TransmissionType { get; set; } = "";
public string Suspension { get; set; } = "";
public string InteriorColor { get; set; } = "";
public bool OdometerExceedsLimit { get; set; }
public bool OdometerTrueMileageUnknown { get; set; }
public bool OdometerFiveDigit { get; set; }
public string TitleNumber { get; set; } = "";
public DateTime? TitleDate { get; set; }
public string TitleState { get; set; } = "";
public DateTime? TitleDue { get; set; }
public DateTime? TitleReceived { get; set; }
}
有些代码,即使它不编译,也能真正帮助说明你的问题。 – CodeCaster
看来你可以声明抽象类Deal为'Deal',并将'T'传递给'Inventory ',或者一个'Deal ',并带有'Inventory '属性。但是我真的不清楚你想要做什么。 –
CodeCaster
你只是问如何在你的课堂上有多个类型的参数? – David