问题描述
|
我最近开始与nhibernate一起玩,并且目前正在尝试实现一个通用功能,该功能在数据库中搜索具有特定名称的条目:
public T FindName<T>(string name) where T : class
{
T obj;
using (ISession session = m_SessionFactory.OpenSession())
{
obj = session.QueryOver<T>()
.Where(x => x.Name == name).SingleOrDefault();
}
return obj;
}
问题是我对\“。Where(x => x.Name == name)\”语句提出了投诉:\“ Delegate \'System.Func \'没有1个参数\”。从我在网上看到的情况来看,这种说法经常被使用,我不确定自己在做什么错。
如果您有任何想法请告诉我。
非常感谢。
解决方法
您需要确保可以在T类型的x上调用Name。
这可以通过使接口具有属性名称,类型字符串并指定...来实现。
其中T:class,INameable
这是一些代码:
interface INameable
{
string Name { get; }
}
class MyClass
{
ISessionFactory m_SessionFactory;
public T FindName<T>(string name) where T : class,INameable
{
T obj;
using (ISession session = m_SessionFactory.OpenSession())
{
obj = session.QueryOver<T>()
.Where(x => x.Name == name).SingleOrDefault();
}
return obj;
}