我有泛型的問題。我寫了一個泛型類。我從這個類中派生出其他類。使用來自非泛型類的泛型
最後我想在另一個類中使用這個派生類,但我還沒有找到工作解決方案如何讓它工作。
這裏是我的簡單的例子:
// Generic base class
public class Information<T>
{
public T StatusCode;
public bool Changed;
}
public class Status1 : Information<Status1.Codes>
{
public enum Codes { None = 0, }
public string AdditionalStatusInformation;
public Status1()
{
StatusCode = Codes.None;
}
}
public class Status2 : Information<Status2.Codes>
{
public enum Codes { OK = 0, }
public Status2()
{
StatusCode = Codes.OK;
}
}
一切好爲止。我使用Json發送和閱讀這些信息,這種方法適用於接收器和發射器。適用於Status1和Status2類。
最後,我有通用的ErrorReporter類,我想使用我的Status1或Status2類。似乎這是不可能的。
public class ErrorReporter<T> where T : Information<T>
{
public readonly T Info = Activator.CreateInstance<T>();
public void Update()
{
if (Info.Changed)
{
Console.WriteLine(Info.StatusCode.ToString());
Console.WriteLine(JsonConvert.SerializeObject(Info));
}
}
}
似乎沒有辦法正確實例化這個類。
我嘗試了這些
new ErrorReporter<Status1>()
new ErrorReporter<Status1.Codes>()
new ErrorReporter<Information<Status1.Codes>()
我越來越
The type 'TestApp.Program.Status1' cannot be used as type parameter 'T' in
the generic type or method 'TestApp.Program.ErrorReporter<T>'.
There is no implicit reference conversion from 'TestApp.Program.Status1' to
'TestApp.Program.Information<TestApp.Program.Status1>'.
或類似的錯誤消息。
我可能應該將我的ErrorReporter類移動到Information類。
但是,從我的ErrorReporter類實例化新對象的正確方法是什麼?它甚至有可能嗎?
多虧了你們倆。我現在看到我的錯誤... – itix