不太確定如何用單線解釋它,但這是我的情況。如何在現有類中添加類<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