解决方案 »
- C#中如何将float型数据转换成int型数据,且小数部分保留
- WinForm中在Webbrowser上用IMessageFilter透明层的问题
- 如何自动产生一个记录?
- VS .NET(C#)四舍五入方法
- 急急急!!!c#获取远程文件的最后更新时间,求救啊
- 求子串
- 请教!c#中想使用“打开”对话框和写INI文件冲突
- 高手请进,如何实现两个树控件节点之间的画线,在线等待,急!!!谢谢了
- 在vs.net 2003中的帮助目录里Visual c++的参考项目是英文的,请问?
- 数据库操作insert老是莫名其妙的报错。。。。
- 被C#虐了好多天了,小女子求教各位大神,在C#中如何实现将两张t图片相减,并将差异显示出来?
- 学习.net,需要学习哪些基本英语单词
{
public abstract IQueryable<T> getCountries<T>();
public abstract IQueryable<T> getProvinces<T>();
public abstract IQueryable<T> getCities<T>();
public abstract IQueryable<T> getBanks<T>();
public abstract IQueryable<T> getCurrencyTypes<T>();
public abstract IQueryable<T> getCredentialsTypes<T>();
public abstract IQueryable<T> getCalls<T>();
public virtual IQueryable<T> getDepositWaies<T>()
{
return null;
}
public virtual IQueryable<T> getPayeeBanks<T>()
{
return null;
}
public virtual IQueryable<T> getPayeeBankRelations<T>()
{
return null;
}
}
这是子类 每次都需要显示传入类型T 怎么改能成我提问的那种 毋须显示声明类型/// <summary>
/// 获取所有国家
/// </summary>
/// <returns></returns>
public override IQueryable<JS_Country> getCountries<JS_Country>()
{
TBullionDbEntities db = new TBullionDbEntities();
var q = from r in db.JS_Country
select r;
return q as IQueryable<JS_Country>;
}
public IQueryable<T> getList<T>()
{
return null;
}
{
public IQueryable<T> getList()
{
return null;
}
}
public static class bbb
{
public static IQueryable<T> getList<T>(this T obj)
{
return null;
}
}要么这样
IQueryable<MarshalAsAttribute> c = a.getList();
如果说像我上面给的例子那样 那每个方法调用都需要实例化 下面这样EntityFactory f=new TEFHelper(Model1);
f.getModel1();EntityFactory f2 = new TEFHelper(Model2);
f.getModel2();
这样的貌似比之前那种还麻烦了
IQueryable<MarshalAsAttribute> c = a.getList();
你这个方法初步看来符合我的要求 待我试试能否使用
IQueryable<MarshalAsAttribute> c = a.getList();
额 发现你这个不行 我是用父类去实例化子类 你这个都静态的了 毋须实例化了 我怎么调用子类哦。。
Repository 模式
按你的构想,你应该设计成泛型类(接口)
public abstract class EntityFactory<T> where T : EntityObject
{
public abstract IQueryable<T> getProvinces<T>();
public abstract IQueryable<T> getCities<T>();
public abstract IQueryable<T> getBanks<T>();
public abstract IQueryable<T> getCurrencyTypes<T>();
public abstract IQueryable<T> getCredentialsTypes<T>();
public abstract IQueryable<T> getCalls<T>();
public virtual IQueryable<T> getDepositWaies<T>()
{
return null;
}
public virtual IQueryable<T> getPayeeBanks<T>()
{
return null;
}
public virtual IQueryable<T> getPayeeBankRelations<T>()
{
return null;
}
}
这种编译器就能推导出q的类型为iqueryable<js_country> 为什么我的不行呢
这种编译器就能推导出q的类型为iqueryable<js_country> 为什么我的不行呢
我说的做不到是指,你没有办法将匿名类型作为函数的返回值。
我为什么想到用这种方式去实现 就是因为看到linq的那种写法 很方便 但是我看封装的程序集只有一个声明 所以还是不清楚到底怎么样才能实现类似于linq的写法 ,但是你也看到了 我上面这个功能确实很需要这个匿名类型 如果没有它 这个功能要大打折扣的
这种编译器就能推导出q的类型为iqueryable<js_country> 为什么我的不行呢
我说的做不到是指,你没有办法将匿名类型作为函数的返回值。即是说,我这个问题解决不了了吗
这种编译器就能推导出q的类型为iqueryable<js_country> 为什么我的不行呢
我说的做不到是指,你没有办法将匿名类型作为函数的返回值。即是说,我这个问题解决不了了吗 从语法的角度解决不了,不等于说你写不出程序。一个是,你需要人工定义那些本来作为匿名类型的类型。另一个是,你可以返回List<object>,在主程序中用dynamic类型接收(C# 4.0+这样最简单),或者用object类型接收并且反射。还有就是将Select的过程交给调用者自己做,用委托传入,这样绕开了返回一个匿名类型这个问题了。
不过有个不好的地方就是无法使用VS的自动提示功能呢了 因为是动态的 得在运行时再解析 不过也算完美解决了
{
TBullionDbEntities db = new TBullionDbEntities();
var q = from r in db.JS_Country
select r;
return q as IQueryable<JS_Country>;
}没有任何参数,类型是凭空冒出来的,如果你写成这样也是可以确定类型的 public override IQueryable<JS_Country> getCountries<JS_Country>(IQueryable<JS_Country> query)
{
var q = from r in query
select r;
return q as IQueryable<JS_Country>;
}
XXX.getCountries(new TBullionDbEntities().JS_Country);