方法就是这个,EntityBase.Get:
public class EntityBase
{
public int Id;
public static T Get<T>(int id) where T : EntityBase
{
DataContextExtender extender = new DataContextExtender();
return extender.DataContext.GetTable<T>().Where(t => t.Id == id).FirstOrDefault();
}
}
我想如何使用它:
Event ev = Event.Get(EventId)
,其中Event继承EntityBase。
该方法自行编译,就像它一样,但如果我想以这种方式使用它,我会收到一条错误消息:
无法从用法推断出方法'RiotingBits.Data.Entities.EntityBase.Get(int)'的类型参数。尝试明确指定类型参数。
我知道我可以像Event.Get<Event>(EventId)
一样使用它,但我真的想用'我的方式'。该方法的代码无关紧要,我怀疑可能有一种方法可以提示该方法如何推断出正确的类型。
答案 0 :(得分:8)
如果您只想在单一类型(Event
)中执行此操作,则可以始终在GetEvent
中创建一个新的Event
静态方法,该方法只调用Get<Event>
。
答案 1 :(得分:3)
我不这么认为。我认为只根据方法的参数推断出类型。所以我认为你坚持明确指定类的类型。有关详细信息,请参阅MSDN。