目录
一、需求:项目中经常需要动态生成对象,而非采用new关键字方式,例如Java里面的根据类全限定名反射生成对象实例。
二、方案:采用Activator.CreateInstance

- namespace Test.Console.Core.Interface
- {
- public interface IObjcet
- {
- void Put();
-
- void Put(string plus);
- }
- }
- using Test.Console.Core.Interface;
-
- namespace Test.Console.Core
- {
- public class PlugPut : IObjcet
- {
- private string plugName = "";
- public string PlugName
- {
- get { return plugName; }
- set { plugName = value; }
- }
-
- public PlugPut() { }
-
- public PlugPut(string plusName)
- {
- this.PlugName = plusName;
- }
-
- public void Put()
- {
- System.Console.WriteLine("Default plug value is:" + plugName);
- }
-
- public void Put(string plus)
- {
- System.Console.WriteLine("Put plus value is:" + plus);
- }
- }
- }
System.Type.GetType("Test.Console.Core.PlugPut,Test.Console")中
Test.Console.Core.PlugPut:是实现类的全限定名路径。
Test.Console:是程序集名称。
- // See https://aka.ms/new-console-template for more information
- using Test.Console.Core.Interface;
-
- //用Activator.CreateInstance创建函数实例,默认的不带参数的构造函数
- IObjcet ojbi = (IObjcet)Activator.CreateInstance(System.Type.GetType("Test.Console.Core.PlugPut,Test.Console"), null);
- ojbi.Put();
-
- //用Activator.CreateInstance创建函数实例,并且是带参数的构造函数
- IObjcet ojbi2 = (IObjcet)Activator.CreateInstance(System.Type.GetType("Test.Console.Core.PlugPut,Test.Console"), new string[] { "seted new name" });
- ojbi2.Put();
-
-
-