如何使用反射而不是开关情况- c#



由于信息不足,我修改了之前的问题。

我写了一个名为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

相关内容

  • 没有找到相关文章

最新更新