【发布时间】:2010-10-30 15:50:28
【问题描述】:
我在理解“T 型”的幕后发生了什么事情来解决这个问题时遇到了一些问题,我希望你们中的一些人可以在隧道尽头向我展示一盏灯 :)
我有一个COM object,我几乎分配了一些东西(属性),但我需要将它用于所有对象,并且我想这样做一次,并且只有它适用于所有类型。
打印机类型:
switch (type)
{
case convert2pdf.ConvertFileType.Word:
WordPrintJob oPrintJob = null; break;
case convert2pdf.ConvertFileType.Excel:
ExcelPrintJob oPrintJob = null; break;
case convert2pdf.ConvertFileType.PowerPoint:
PowerPointPrintJob oPrintJob = null; break;
case convert2pdf.ConvertFileType.IE:
IEPrintJob oPrintJob = null; break;
case convert2pdf.ConvertFileType.Publisher:
PublisherPrintJob oPrintJob = null; break;
case convert2pdf.ConvertFileType.Visio:
VisioPrintJob oPrintJob = null; break;
default:
GenericPrintJob oPrintJob = null; break;
}
然后,无论我创建什么对象类型,我每次都实现:
PDFSetting oPDFSetting = null;
oPrintJob = oPrinter.GenericPrintJob;
oPDFSetting = oPrintJob.PDFSetting;
/*put water mark on the first page, set the water mark text to "BCL EasyPDF */
oPDFSetting.set_Watermark(0, true);
oPDFSetting.set_WatermarkColor(0, (uint)System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Blue));
oPDFSetting.set_WatermarkFirstPageOnly(0, true);
oPDFSetting.set_WatermarkText(0, "EasyPDF");
/*set the meta data for the pdf file*/
oPDFSetting.MetaData = true;
oPDFSetting.MetaDataAuthor = "Your Name";
oPDFSetting.MetaDataCreator = "BCL";
oPDFSetting.MetaDataKeywords = "PDF";
oPDFSetting.MetaDataSubject = "Converter";
oPDFSetting.MetaDataTitle = "easyPDF SDK";
我如何使用“T 型”的东西(男人......经过 3 年的 C# 我仍然无法理解,无论我阅读什么,我阅读了 Wikipedia、ASP.NET 3.5 专业书籍、教程、 ...) :(
也就是说,我怎样才能重用这些属性。
我考虑过创建一个 ExtensionMethod,但我将不得不编写所有这些方法并且不能重用任何代码... 我考虑过创建一个通用控件并创建一个继承该基础控件的新控件,以便我可以使用
GlocalObject oPrintJob = null;
...
WordPrintJob oPrintJob = (WordPrintJob)GlocalObject;
我说的有道理吗?
更新答案
好的,所以,没有“类型 T”,但基类/接口...... 然后,我尝试创建该接口,以便可以从中继承,并得到下面的图像:
alt text http://www.balexandre.com/temp/2009-06-02_1521_soQuestion_Interface.png
如果界面中我说的是 PrintJob 类型,那我该如何返回一个 WordPrintJob 类型呢? :-(我不明白...
【问题讨论】:
标签: c# inheritance types