【发布时间】:2013-01-31 17:09:41
【问题描述】:
我有一个工厂类,它返回从抽象类型继承的具体实例。这些具体实例还具有其数据类型的通用属性,因为每个实例都需要不同的数据类型。 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>
有没有更好的方法来做我想做的事情?
【问题讨论】:
-
您指的是 AbstractClass、AbstractBase 和 AbstractBaseClass。只是很多错别字?
-
是的,哎呀。我从头开始重新输入它,因为它比将我正在处理的代码更容易地清理为 SO 问题清晰易读的东西。修好了。
标签: c# generics abstract-class