急.急.在线等解决马上给分.大吓请进..关于实体名作为参数

jeje 2011-03-31 10:07:19
例如我现在有很多实体对象,如Bank,Brand等等.
他们都有共同的添加方法,里面所有的操作都是一样的只是添加的对象不同.我想将这个方法提取出来通过一个方法来搞定.

public int GetWarehouseCount(string keyWord, string[] likeString, ?)
{
// Query query = null;
// switch (objClass)
//{
// case "warehouse":
// query = new Query(typeof(Bank));
// break;
// default:
// break;
// }
Query query =new Query(typeof(?));

if (!string.IsNullOrEmpty(keyWord))
{
foreach (string strTemp in likeString)
{
if (query.QueryExpression == null)
{
query.QueryExpression = Entity.Attribute(strTemp).Like(String.Format("%{0}%", keyWord));
}
else
{
query.QueryExpression = query.QueryExpression || Entity.Attribute(strTemp).Like(String.Format("%{0}%", keyWord));
}
}
}
query.QueryExpression = query.QueryExpression && Entity.Attribute("SysIsDeleted") == 0 && Entity.Attribute("SysIsSuspend") == 0;
return ConvertHandle.ConvertToInt32(UnitOfWork.Count(query).ToString());
}


"?"是我想从另一个地方传一个对象, 请问一下有没有解决方法.有的话"?"的地方要怎么写.请各位大吓帮忙解决下.谢谢
...全文
139 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
jeje 2011-03-31
  • 打赏
  • 举报
回复
结贴给分拉
jeje 2011-03-31
  • 打赏
  • 举报
回复
非常感谢大家.直接这样就行了.不用在后面再加T t
public int GetWarehouseCount<T>(string keyWord, string[] likeString)
Query query =new Query(typeof(T));
jeje 2011-03-31
  • 打赏
  • 举报
回复
public int GetWarehouseCount<T>(string keyWord, string[] likeString,T t)

Query query =new Query(typeof(t));
这样写找不到t
symbol_bc 2011-03-31
  • 打赏
  • 举报
回复
如果有继承关系的话,那就不用说了,大家都懂得。
symbol_bc 2011-03-31
  • 打赏
  • 举报
回复
虽然不大知道LightSpeed相关的意思,但是就这个问题,应该是这样。

在多个无关联(继承关系)的类上调用它们的同名方法,在framework4.0之前,似乎只有反射一种方法,

public class Main<T> where T: new()
{
public void work()
{
T t = new T();
string s = t.GetName();//这里无法通过编译
}
}

public class A
{
public string GetName()
{
return "";
}
}

public class B
{
public string GetName()
{
return "";
}
}

因为泛型同样会做编译时类型检查,所以反射是解决问题的唯一方法,泛型可用可不用。

public class Main1<T>
{
public void work()
{
Type t = typeof(T);

T obj = System.Activator.CreateInstance<T>();

object o = t.InvokeMember("GetName", System.Reflection.BindingFlags.InvokeMethod, null, obj, null);
}
}

在framework4.0之后,dynamic关键字是真正的运行时确定类型。

public class Main2<T> where T : new()
{
public void work()
{
dynamic t = new T();

string s = t.GetName();
}
}

//调用时
Main2<A> m = new Main2<A>();

m.work();

非常酷,但是风险也很大。
子夜__ 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jejexu 的回复:]

引用 7 楼 wxr0323 的回复:
引用 6 楼 jejexu 的回复:

用的LightSpeed里面的属性 相当于SQL Where后的条件

我是举个例子啊

Brand这些类 可以斗继承一个父类?

然后里面传父类。。

调用的时候传子类。

泛型类也可以啊。

你可以贴一个简单的泛型类例子出来不
[/Quote]
public int GetWarehouseCount<T>(string keyWord, string[] likeString,T t)

Query query =new Query(typeof(t));
Corporal 2011-03-31
  • 打赏
  • 举报
回复
如果你用4.0的话可以用动态对像

public int GetWarehouseCount(string keyWord, string[] likeString, Dynamic d)

后面的代码直接写,只是没有提示。
d.Name
运行时你传入一个对象,只要你写的代码对于传入的对象是通过的,程序就可以执行。

shiyuyao1987 2011-03-31
  • 打赏
  • 举报
回复
public int GetWarehouseCount<T>(string keyWord, string[] likeString, T model)
jeje 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wxr0323 的回复:]
引用 6 楼 jejexu 的回复:

用的LightSpeed里面的属性 相当于SQL Where后的条件

我是举个例子啊

Brand这些类 可以斗继承一个父类?

然后里面传父类。。

调用的时候传子类。

泛型类也可以啊。
[/Quote]
你可以贴一个简单的泛型类例子出来不
jeje 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 symbol_bc 的回复:]
请问一下,楼主的代码
Query Entity.Attribute 什么的,是自己的代码还是引用的什么框架啊,我孤陋寡闻。
[/Quote]
其实那些代码都不用管的,主要是如何将对象名传过来,如果确定的话就直接可以
query = new Query(typeof(Bank));
子夜__ 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jejexu 的回复:]

用的LightSpeed里面的属性 相当于SQL Where后的条件
[/Quote]
我是举个例子啊

Brand这些类 可以斗继承一个父类?

然后里面传父类。。

调用的时候传子类。

泛型类也可以啊。
jeje 2011-03-31
  • 打赏
  • 举报
回复
用的LightSpeed里面的属性 相当于SQL Where后的条件
symbol_bc 2011-03-31
  • 打赏
  • 举报
回复
请问一下,楼主的代码
Query Entity.Attribute 什么的,是自己的代码还是引用的什么框架啊,我孤陋寡闻。

jeje 2011-03-31
  • 打赏
  • 举报
回复
public int GetWarehouseCount(string keyWord, string[] likeString,T)
//T那里作为参数会报错哦
子夜__ 2011-03-31
  • 打赏
  • 举报
回复
子夜__ 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jejexu 的回复:]

CSDN里面的大吓都还在睡觉么.自己顶一下
[/Quote]

public int GetWarehouseCount(string keyWord, string[] likeString,T)

Query query =new Query(typeof(T));
jeje 2011-03-31
  • 打赏
  • 举报
回复
CSDN里面的大吓都还在睡觉么.自己顶一下

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧