2014-03-01 39 views
1

我正在研究一個程序,我必須讀取幾個excel文件來填充複雜類的對象的一個​​實例。它有許多不同類型的方法和屬性,從項目中其他自定義類的對象的雙重嵌套列表。有沒有辦法存儲我創建的實例供將來參考?我想在不同的項目中使用該特定的實例,而無需再次讀取所有的Excel文件。從不同的應用程序訪問對象的一個​​實例

例如讓我的班級成爲Book.cs

public class Book 
{  
    public string title; 
    public string author; 
    public string publisher; 
    public int publishYear; 
    public int pages; 
    public LibraryRef refInfo; //another custom class with properties. 
} 

還有一種讀取excel文件並設置上述屬性的方法。然後在Main我創建一個Book類的實例。

Book b = new Book(); 
b.ReadExcelFile("excelFile"); //sets the properties of the instance. 

我希望能夠從不同的項目中訪問的b的屬性值,每當我想要的。

回答

0

您可以在運行時爲項目實現內存中共享緩存,並訪問緩存對象(如果它來自同一應用程序中的另一個模塊)。

由於它是一個不同的應用程序,所以不會有共享內存。因此,避免解析excel文件的最佳方法是將該對象序列化爲一個文件(位於通用文件位置)並將其反序列化。如果您不喜歡使用文件系統,則還可以使用azure blob存儲。

請參閱序列化和反序列化的二進制格式化程序用法。 http://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatters.binary.binaryformatter(v=vs.110).aspx

+0

你的意思是類似[this](http://support.microsoft.com/kb/815813/en-us)?我研究序列化來理解這個概念,但我只看到了帶有xml和二進制序列化的簡單示例。我不確定它是否會支持自定義類的屬性(例如:上面的LibraryRef類型)。我想我必須嘗試看看序列化是否有效。 – rrh

+0

你有點在正確的軌道上。但是,有不同的[類型](http://msdn.microsoft.com/en-us/library/ms233843.aspx)的序列化。 – cvraman

相關問題