我有一个函数,它将一个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