我正在编写一个由 Importer 和 Processor 组成的应用程序。Importer 将采用一个类型并实例化List<>
该类型的 a。处理器需要获取返回的列表。
例如,我想调用Importer<Organisation>.GetObjects()
并让它返回一个List<Organisation>
. 然后将列表传递给我的 OrganisationProcessor。
同样,我想调用Importer<Address>.GetObjects()
并让它返回一个List<Address>
. 然后将列表传递给我的地址处理器。
我想将Importer<>
and *Processor 的创建放入工厂。我已经删除了所有代码并在下面生成了一个未受污染的样本。我的尝试没有成功,可能归结为我不完全理解的方差之类的话题。
class Program
{
static void Main(string[] args)
{
//What I am currently doing
Importer<Organisation> importer = new Importer<Organisation>();
List<Organisation> list = importer.GetObjects();
OrganisationProcessor processor = new OrganisationProcessor();
processor.Process(list);
//***What I want to do***
string name = "Organisation"; //Passed in from external source
var importer = Factory.GetImporter(name); //returns Importer<Organisation>
var processor = Factory.GetProcessor(name); //returns OrganisationProcessor
processor.Process(importer.GetObjects()); //.Process takes List<Organisation>
}
}
public class Importer<T>
{
public List<T> GetObjects()
{
return new List<T>();
}
}
public class OrganisationProcessor
{
public void Process(List<Organisation> objects)
{
//Do something
}
}
public class AddressProcessor
{
public void Process(List<Address> objects)
{
//Do something
}
}
public class Organisation { }
public class Address { }