求大神指点 :反射创建实现泛型接口的泛型类实例

godshome godshome 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
accessdal代码:
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 + ">")
...全文
评论 5
收藏 已收藏
分享
返回顶部
godshome
C# 111,128 成员 642,537 内容