前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#反射学习

C#反射学习

作者头像
SAP梦心
发布2022-05-09 13:21:15
2030
发布2022-05-09 13:21:15
举报

这天都在学习c#的反射原理,网上的资料很多。以前听说反射也仅仅是在《大话设计模式》里面直到一点点,了解不深。

开始我还不知道反射到底有什么好处,后来我才知道利用反射我们可以在运行时的时候通过变量来实例化类的实例。可以有效避免了很多的逻辑判断。

以下是我的测试的代码:

using System;

using System.Collections.Generic;

using System.Text;

using System.Reflection; //反射需要引用的命名空间

namespace 反射原理

{

class Program

{

static void Main(string[] args)

{

string str = Console.ReadLine();

Icon i = ConFactory.ReturnCon(str);

i.OutputStr();

Console.ReadKey();

}

}

class ConFactory

{

private static readonly string AssemblyName = "反射原理"; //程序及

public static Icon ReturnCon(string str) //str参数是指类名

{

string ClassName = AssemblyName + "." + str;

return (Icon)Assembly.Load(AssemblyName).CreateInstance(ClassName); //生成特定类的实例,然后转换为接口返回

}

}

interface Icon

{

void OutputStr();

}

class PersonCon : Icon

{

public void OutputStr()

{

Console.WriteLine("PersonCon");

}

}

class WorldCon : Icon

{

public void OutputStr()

{

Console.WriteLine("WorldCon");

}

}

}

这样我们可以通过读取外部的配置文件来对我们的变量进行赋值,然后通过它来实例化特指的类。这招在多数据库的应用特别有效。我们只需要修改配置文件就可以达到更换数据库的目的。有效降低了类之间的耦合,更灵活,更容易修改…

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2009-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档