我有一個工廠類,返回從抽象類型繼承的具體實例。這些具體實例的數據類型也具有通用屬性,因爲每個實例都需要不同的數據類型。 Data屬性也存在於抽象類型中,因爲它在工廠中設置。是否可以重寫抽象類的工廠方法中的泛型類型?
public static class FactoryClass
{
public static TType CreateNewClass<TType>(object data)
where TType : AbstractClass<object>, new()
{
var newClass = new TType {Data = data};
// do some stuff
// keep track of all created types in a list
List.Add(newClass);
return newClass;
}
private List<AbstractClass<object>> MyList = new List<AbstractClass<object>>()
}
public abstract class AbstractClass<TData>
{
internal AbstractClass()
{
// do constructor things
}
protected SomeCommonFunction()
{
// common code for abstract base class
}
public abstract void DoSomethingToData();
TData Data;
}
public class ExampleClass : AbstractClass<string[]>
{
public override void DoSomethingToData()
{
// sort the strings or something
// call the abstract code
}
}
當我嘗試並調用FactoryClass.CreateNewClass<ExampleClass>(myStringArray)
我得到一個錯誤,它需要被強制轉換爲AbstractClass<object>
有沒有更好的辦法做我想要做什麼?
你指的抽象類,AbstractBase和AbstractBaseClass。只是很多錯別字? – devio
是的,哎呀。我從頭開始重新輸入,因爲它比清理我正在編寫的代碼更容易理解SO問題。修復。 – WarrenB