我有一個函數,它將一個word文檔保存爲html格式。我想使用相同的功能來處理任何文檔類型。我嘗試過使用泛型(我假設不同的doc API是相同的),由於Jon Skeet指出的原因而失敗。有另一種方法嗎?將名稱空間傳遞給函數
using Word = Microsoft.Office.Interop.Word;
using Excel = Microsoft.Office.Interop.Excel;
//Works ok
private void convertDocToHtm(string filename)
{
... snip
var app = new Word.Application();
var doc = new Word.Document();
doc = app.Documents.Open(ref fileName, ref missing, ref trueValue, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
... snip
}
//fails dismally (to compile) because 'T' is a 'type parameter', which is not valid in the given context - i.e Word is a namespace not a class
private void convertDocToHtm2<T>(string filename)
{
... snip
var app = new T.Application();
var doc = new T.Document();
doc = app.Documents.Open(ref fileName, ref missing, ref trueValue, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
... snip
}
//calling examples
convertDocToHtm(filename);
convertDocToHtm2<Word>(filename);
convertDocToHtm2<Excel>(filename);
嗯,看起來有趣,但我們仍然沒有移動到.net 4 ... – Patrick 2011-03-10 10:29:52
@Patrick:在這種情況下,我認爲你會被卡住手動反射,或每個應用程序單獨的方法。 – 2011-03-10 10:31:46
無論如何,它是沒有用的,因爲'Excel.Application'不包含名爲'Documents'的屬性,所以這個方法只能用於Word文檔。 – 2011-03-10 10:34:57