由于缺乏信息,我已经编辑了我之前的问题。
我编写了一个名为 ReaderFactory 的类,我在其中创建了一个Method GetAReader(string filename)。这个方法使用文件扩展名返回一个阅读器。我使用switch-case来选择特定的reader.But我的导师建议我使用反射而不是switch-case。我已经开始学习反射并且卡在它的行为上。如何在代码中实现反射而不是switch-case? 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;
}
答案 0 :(得分:4)
反射是非常复杂的,但可以用于各种各样的事情。 一些例子:
为了缩短它,通过反射,您可以将任何.NET代码反编译为C#/ VB或任何其他IL语言。
我建议你看一下telerik的反编译器(这是一个让你查看dll源代码的工具)。比你知道反思是什么。
Alo,这里有一些文档可以帮助您入门:http://msdn.microsoft.com/en-us/library/f7ykdhsy.aspx