由于信息不足,我修改了之前的问题。
我写了一个名为ReaderFactory的类,在那里我创建了一个方法GetAReader(字符串filename)。此方法使用其文件扩展名返回阅读器。我使用开关箱来选择特定的阅读器。但是我的老师建议我用反射而不是开关箱。我已经开始学习反思,并被它的行为所困扰。如何在代码中实现反射而不是切换?GetAReader方法给出如下:
public static IReader GetAReader(string _fileName)
{
fileName = _fileName;
fileExtension = Path.GetExtension(fileName);
switch (fileExtension)
{
case ".txt":
TextFileReader _textReader = new TextFileReader(fileName);
_textReader.ReadData();
return _textReader;
case ".pdf":
PDFReader _pdfReader = new PDFReader(fileName);
_pdfReader.ReadData();
return _pdfReader;
case ".doc":
//reader initialize
case ".rtf":
//reader initialize
case ".docx":
//reader initialize
case ".jpg":
//reader initialize
}
return null;
}
反射是非常复杂的东西,但可以用于各种各样的事情。一些例子:
- 通过指定名称读取属性。
- 加载程序集并获取它的所有类型。 <
- 读属性/gh>
简而言之,通过反射,您可以将任何。net代码反编译为c#/VB或任何其他IL语言。
我建议你看看telerik的反编译器(这是一个让你查看dll源代码的工具)。那么你就知道反射是什么了。
同样,这里有一些文档帮助您入门:http://msdn.microsoft.com/en-us/library/f7ykdhsy.aspx