2012-11-02 53 views
3

我有一個工廠,有一些具體的子類用於生成報告(.txt,.csv,.xls) 我想使具體類的接口是通用的,以便我可以傳入diff類型的參數(而不是DataTable,我需要使用DataSet或其他類實例作爲參數)。這是我的界面。如何在工廠使用通用接口

interface IReportCreator 
{ 
    bool Create(DataTable dt); 
} 

我所做的接口generic..like下面

interface IReportCreator<T> 
{ 
    bool Create(T args); 
} 

現在我的一個問題是,如何從工廠 我以前的工廠代碼返回通用接口

class Factory 
{ 
    static IReportCreator GetReportCreator(string type) 
    { 
     IReportCreator reportCreator = null; 
     if(type == "txt") 
      reportCreator = new TextCreator(); 

     if(type == "csv") 
      reportCreator = new CSVCreator(); 
    } 
} 

而在cient ..我打電話給這樣的 IReportCreator repCreator = Factory.GetReportCreator(「txt」); repCreator.Create(// arg); //這裏的論點我需要它作爲通用 類工廠 {// 我不知道如何回到這裏的接口.. }

任何幫助將不勝感激..

+0

您能否提供您工廠的代碼? –

+0

public IReportCreator ReportCreator {get; set;}'? – Jeff

+0

我已經放置了我以前工廠的代碼 – Anish

回答

3
interface IReportCreator<T> 
{ 
    bool Create(T t); 
} 

class Factory 
{ 
    public IReportCreator<T> Create<T>(); 
} 

var factory = new Factory(); 
var reportCreator = factory.Create<DataTable>();