一直想得到这样一个函数,创建类的一个实例,该类由指定的泛型参数指定
2017-06-05 15:12
337 查看
创建类型的一个实例,该类型由指定的泛型类型参数指定。也就是创建一个泛型参数所属类型的对象。
C#
public static T CreateInstance<T>()
类型参数
T
要创建的类型。
返回值
类型:T
对新创建对象的引用。
通常情况下,在应用程序代码中无需使用 CreateInstance,因为在编译时类型必须是已知的。如果编译时类型已知,则可以使用正常的实例化语法(在 C# 中为 new 运算符)。
不存在带参数列表的 CreateInstance 泛型方法的重载,因为 CreateInstance 的非泛型重载已经提供了后期绑定构造函数决策。
C#
public static T CreateInstance<T>()
类型参数
T
要创建的类型。
返回值
类型:T
对新创建对象的引用。
通常情况下,在应用程序代码中无需使用 CreateInstance,因为在编译时类型必须是已知的。如果编译时类型已知,则可以使用正常的实例化语法(在 C# 中为 new 运算符)。
不存在带参数列表的 CreateInstance 泛型方法的重载,因为 CreateInstance 的非泛型重载已经提供了后期绑定构造函数决策。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { //方法一、获得学生对象 new Student() new Student().Say("张三"); //方法二、获得学生对象 Student.GetInstance Student.GetInstance.Say("李四"); } } class Student { public string stuName = string.Empty; public static Student GetInstance { get { return SingleItem<Student>.GetInstance(); } } public void Say(String strName) { Console.WriteLine("我的名字是:" + strName); } } static class SingleItem<T> { /// <summary> /// 获得T的对象 /// </summary> /// <returns></returns> public static T GetInstance() { return TryGetInstance(null); } /// <summary> /// 获得T的对象 /// </summary> /// <param name="onCreateInstance"></param> /// <returns></returns> private static T TryGetInstance(Func<T> onCreateInstance) { try { if (onCreateInstance == null) return Activator.CreateInstance<T>(); else return onCreateInstance(); } catch { return default(T); } } } }
相关文章推荐
- 当一个类的构造函数被定义为private时如何创建该类的实例
- 泛型约束where条件的使用(通过类型参数动态反射创建实例)
- 创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。
- 1. 给定两个整形变量的值,将两个值的内容进行交换。 2. 不允许创建临时变量,交换两个数的内容(附加题) 3. 求10 个整数中最大值。 4. 写一个函数返回参数二进制中 1 的个数
- 通过反射创建一个构造函数带有参数的类的实例
- 启动一个新实例,创建参数文件,设置警告日志
- 1. 给定两个整形变量的值,将两个值的内容进行交换。 2. 不允许创建临时变量,交换两个数的内容(附加题) 3. 求10 个整数中最大值。 4. 写一个函数返回参数二进制中 1 的个数
- C语言下的创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。
- //4.创建一个数组, //实现函数init()初始化数组、 //实现empty()清空数组、 //实现reverse()函数完成数组元素的逆置。 //要求:自己设计函数的参数,返回值。
- DataTable数据转换为List和泛型对构造函数带参数的类创建实例的方法
- range() 函数创建并返回一个包含指定范围的元素的数组
- 创建存储过程,以部门编号为参数返回该部门的人数及平均工资(返回一个值可以通过函数来实现,但如果要返回多个值,需要使用out或in out模式参数实现)
- NGUI中 EventDelegate 如何创建一个带参数的函数委托
- 困扰了好几天的一个问题,为存储过程或函数指定的参数太多
- 一个使用泛型堆栈模块创建的两个容纳不同类型数据的实例
- 泛型方法中实例化一个有参数的泛型实例
- 函数指针类的虚函数表是一块连续的内存,每个内存单元中记录一个JMP指令的地址。 注意的是,编译器会为每个有虚函数的类创建一个虚函数表,该虚函数表将被该类的所有对象共享。类的每个虚成员占据虚函数表中的一
- oracle创建一个带参数的存储过程:为指定的员工,涨100块钱的工资;并且打印涨前和涨后的薪水
- (分享面试题)封装一个函数,获取指定参数的值
- jQuery.isEmptyObject()函数用于判断指定参数是否是一个空对象。