抽象型から継承する具象インスタンスを返すファクトリクラスがあります。これらの具象インスタンスには、各インスタンスが異なるデータ型を必要とするため、データ型の汎用プロパティもあります。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>
私がやろうとしていることをするためのより良い方法はありますか?