请参阅下面的代码。我想检查一些属性(例如在IsActive上)。你能告诉我在我的情况下如何在GetList()中实现这个怎么做?
谢谢,
public interface ILookup
{
int Id { get; set; }
string FR { get; set; }
string NL { get; set; }
string EN { get; set; }
bool IsActive { get; set; }
}
public class LookupA : ILookup
{
}
public class LookupB : ILookup
{
}
public interface ILookupRepository<T>
{
IList<T> GetList();
}
public class LookupRepository<T> : ILookupRepository<T>
{
public IList<T> GetList()
{
List<T> list = Session.Query<T>().ToList<T>();
return list;
}
}
答案 0 :(得分:3)
如果您知道T
类型为ILookup
,则需要对其进行约束:
public interface ILookup
{
int Id { get; set; }
string FR { get; set; }
string NL { get; set; }
string EN { get; set; }
bool IsActive { get; set; }
}
public class LookupA : ILookup
{
}
public class LookupB : ILookup
{
}
public interface ILookupRepository<T>
{
IList<T> GetList();
}
public class LookupRepository<T> : ILookupRepository<T> where T : ILookup
{
public IList<T> GetList()
{
List<T> list = Session.Query<T>().Where(y => y.IsActive).ToList<T>();
return list;
}
}
答案 1 :(得分:0)
您应该可以利用Generic Constraints来帮助您。
首先,更改您的界面定义:
public interface ILookupRepository<T> where T : ILookup
// ^^^^^^^^^^^^^^^^^
其次,更改类定义以匹配约束:
public class LookupRepository<T> : ILookupRepository<T> where T : ILookup
// ^^^^^^^^^^^^^^^^^
约束将要求泛型类型参数实现ILookup
。这将允许您使用GetList
方法中的界面成员。