求大神指点 :反射创建实现泛型接口的泛型类实例
accessdal代码:
Idal代码就是接口ISqlHelperX<T>
Dal代码:
Bll:
问题:非泛型Bll.XhpSqlParam.方法()可以顺利调用
泛型 Bll.SqlHelperX<Model.Admin>.Insert(admin) 则在Factor中创建实例时为null
已调式成功可以创建的语句为:
(ISqlHelperX<T>)Assembly.Load(path).CreateInstance(typeof(accessdal.SqlHelperX<T>).FullName)
但那是在快速监示里可行,实际程序中,Factor是不允许访问accessdal层的。所以不知道语句如何去写了
下句是我写的,但创建出为null: 注:path为accessdal
(ISqlHelperX<T>)Assembly.Load(path).CreateInstance(path + ".SqlHelperX<" + typeof(T).FullName + ">")
namespace accessdal
{
public class SqlHelperX<T>:ISqlHelperX<T>
where T:new ()
{…………}
}Idal代码就是接口ISqlHelperX<T>
Dal代码:
namespace Dal
{
public static class Factory
{
public static IXhpSqlParam CreateXhpSqlParam()//非泛型,这里没有疑问。
{
return (IXhpSqlParam)Assembly.Load(path).CreateInstance(path + ".XhpSqlParam");
}
public static ISqlHelperX<T> CreateSqlHelperX<T>() //泛型,这里创建出来为null
where T : new()
{
return (ISqlHelperX<T>)Assembly.Load(path).CreateInstance(path + ".SqlHelperX<" + typeof(T).FullName + ">")
}
}Bll:
public class SqlHelperX<T>
where T:new()
{
public static bool Insert(T t, string keyName)
{
return Dal.Factory.CreateSqlHelperX<T>().Insert(t, keyName) > 0;
}
}问题:非泛型Bll.XhpSqlParam.方法()可以顺利调用
泛型 Bll.SqlHelperX<Model.Admin>.Insert(admin) 则在Factor中创建实例时为null
已调式成功可以创建的语句为:
(ISqlHelperX<T>)Assembly.Load(path).CreateInstance(typeof(accessdal.SqlHelperX<T>).FullName)
但那是在快速监示里可行,实际程序中,Factor是不允许访问accessdal层的。所以不知道语句如何去写了
下句是我写的,但创建出为null: 注:path为accessdal
(ISqlHelperX<T>)Assembly.Load(path).CreateInstance(path + ".SqlHelperX<" + typeof(T).FullName + ">")
...全文
相关推荐
Java让泛型实例化的方法
主要介绍了Java让泛型实例化的方法,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
C#泛型、反射实例、自动生成sql语句
C#泛型、反射实例,分层,自动生成sql语句
Java泛型应用实例
网上很多讲泛型原理的文章, 很少有提到我们什么时候使用泛型有优势, 我就泛型类和方法搞了两个实例,算是探索下泛型使用的冰山一角吧,在我博客里面有配套的文章,可以配套看.
C#通过反射创建自定义泛型
主要介绍了C#通过反射创建自定义泛型的方法,需要的朋友可以参考下
Java反射泛型,实现数据库的动态增删改查等功能
在Java中运用反射+泛型,实现数据库的动态增删改查等功能,可以是Mysql, 也可以是SQL Server,oracle 也行。本代码是支持SQL Server和oracle的。


