1
我有一個Generic Abstract Class
與Id
,Name
,Status
一些屬性,該類繼承了幾個目錄。 我的問題是是否有可能創建一個方法限制實現抽象類的目錄。通用類型約束其中類實現抽象類
我舉一些例子,讓他們明白我想做的事:
public abstract class AbsCatalog<T>
{
public T Id { get; set; }
public string Name { get; set; }
public bool Status { get; set; }
}
這些是實現abstract class
public class Agent : AbsCatalog<string>
{
public string Office { get; set; }
public Estado Estado { get; set; }
}
public class Models : AbsCatalog<int>
{
public int Year { get; set; }
public string Description { get; set; }
}
我想要實現的方法的類如下:
List<Agent> Agents = service.GetAgents();
string AgentsDescription = GetDescription<Agent>(Agents);
List<Model> Models = service.GetModels();
string ModelsDescription = GetDescription<Model>(Models);
private string GetDescription<T>(List<T> list) where T : AbsCatalog<T>
{
string description = string.Empty;
if (list.Exists(x => x.Id.ToString() == "0"))
description = "";
else
description = string.Join(", ", list.Where(x => x.Status).Select(x => x.Name).ToArray());
return description;
}
但在驗證,它標誌着一個錯誤: '如果(list.Exists(X => x.Id .ToString()==「0」))' 因爲現在Id的類型爲U – Richard
這不能是一個錯誤,因爲一切都從具有'ToString'的對象繼承。此外,你不應該檢查'==「0」',而是考慮'默認(U)'或傳入一個默認值的方法。 – DavidG