泛型约束where条件的使用(通过类型参数动态反射创建实例)
2014-04-08 14:00
726 查看
定义抽象的人类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace ConsoleApplication1
{ public abstract class person
{
public abstract string ting(); public abstract string shuo();
}
}
定义子类 girl 和boy 类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace ConsoleApplication1 {
public class girl : person
{
public override string ting() { return "girl ting"; }
public override string shuo() { return "girl shuo"; }
}
}
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace ConsoleApplication1 {
public class boy: person
{
public override string ting() { return "boy ting"; }
public override string shuo() { return "boy shuo"; }
}
}
定义模具类可以 可以返回一个boy或者girl的实例
using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks;
namespace ConsoleApplication1 {
public class zhongjian {
public static person CreatePerson<T>() where T:person
{
person p = Activator.CreateInstance(typeof(T)) as person; return p;
}
}
}
模拟环境类 program
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{ person p= zhongjian.CreatePerson<girl>(); string shuo= p.shuo(); string ting= p.ting(); Console.WriteLine(shuo+"\t"+ting);
Console.ReadKey();
}
}
}
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace ConsoleApplication1
{ public abstract class person
{
public abstract string ting(); public abstract string shuo();
}
}
定义子类 girl 和boy 类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace ConsoleApplication1 {
public class girl : person
{
public override string ting() { return "girl ting"; }
public override string shuo() { return "girl shuo"; }
}
}
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace ConsoleApplication1 {
public class boy: person
{
public override string ting() { return "boy ting"; }
public override string shuo() { return "boy shuo"; }
}
}
定义模具类可以 可以返回一个boy或者girl的实例
using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks;
namespace ConsoleApplication1 {
public class zhongjian {
public static person CreatePerson<T>() where T:person
{
person p = Activator.CreateInstance(typeof(T)) as person; return p;
}
}
}
模拟环境类 program
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{ person p= zhongjian.CreatePerson<girl>(); string shuo= p.shuo(); string ting= p.ting(); Console.WriteLine(shuo+"\t"+ting);
Console.ReadKey();
}
}
}
相关文章推荐
- 泛型约束where条件的使用(可以通过类型参数动态反射创建实例)
- 使用反射动态创建类型实例
- 通过反射获得泛型的实例类型参数
- 关于如何使用反射声明一个泛型类型变量(泛型参数是动态的)的问题
- C# 通过反射来动态创建泛型类型
- 使用ADF-BC 实现查询功能之四:通过代码动态设置Where条件参数
- C语言创建链表错误之通过指针参数申请动态内存实例分析
- java 通过反射获得泛型的实际类型参数
- 通过反射获得泛型的实际类型参数
- .Net 中的反射(动态创建类型实例) - Part.4
- .Net 中的反射(动态创建类型实例) - Part.4
- 通过反射创建自定义泛型的实例。
- C# 利用反射动态创建对象——带参数的构造函数和String类型
- .Net 中的反射(动态创建类型实例) - Part.4
- 通过反射(类类型)创建类的实例,调用类的方法,设置类的属性
- java再复习——通过反射获取到方法的参数和返回值的泛型类型
- .Net 中的反射(动态创建类型实例) - Part.4动态创建对象
- c#泛型类型的约束条件where
- More Effective C# Item8 :尽可能使用泛型方法,除非需要将类型参数用于实例的字段中
- 使用 where 子句约束泛型类型