这可能是一些愚蠢的疏忽,但它是这样的:
public class Entity<TId> where TId : IEquatable<TId>
{
public virtual TId Id { get; private set; }
}
public class Client : Entity<Guid> { }
public class State : Entity<short> { }
public class Helper
{
protected IList<Client> clients;
protected IList<State> states;
//Works
public T Get<T>()
{
return default(T);
}
public T Get<T>(Guid id) where T : Entity<Guid>
{
return default(T);
}
public T Get<T>(short id) where T : Entity<short>
{
return default(T);
}
}
我到底如何编写适用于这两个类的 Get 函数?以及从实体继承的所有其他人?
我只是希望我不会得到太多的反对票。:(
编辑
这就是它将被使用的地方。所以它不会只有两个类。但基本上我模型上的所有类。
//What should I declare here?
{
TEntity result = default(TEntity);
try
{
using (var tx = session.BeginTransaction())
{
result = session.Query<TEntity>().Where(e => e.Id == Id).FirstOrDefault();
}
return result;
}
catch (Exception ex)
{
throw;
}
}
使用SWeko给出的解决方案
public TEntity Get<TEntity, TId>(TId Id)
where TEntity : Entity<TId>
where TId : IEquatable<TId>
{
try
{
TEntity result = default(TEntity);
using (var tx = statefullSession.BeginTransaction())
{
result = statefullSession.Query<TEntity>().Where(e => e.Id.Equals(Id)).FirstOrDefault();
}
return result;
}
catch (Exception ex)
{
throw;
}
}