gpt4 book ai didi

c# - 我可以修改此泛型方法以在不丢失(我的信仰)我想要的使用方式的情况下工作吗?

转载 作者:太空宇宙 更新时间:2023-11-03 17:36:53 25 4
gpt4 key购买 nike

方法就是这个,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。

该方法本身会自行编译,但如果我想以这种方式使用它,我会收到一条错误消息:

The type arguments for method 'RiotingBits.Data.Entities.EntityBase.Get(int)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

我知道我可以像Event.Get<Event>(EventId)那样使用它,但我真的很想以“我的方式”使用它。该方法的代码并不重要,我怀疑可能有一种方法可以提示该方法如何推断正确的类型。

最佳答案

不,你不能。 C# 中的类型推断不会考虑您尝试对返回值执行的操作,也不会考虑您用来引用静态方法的类。类型推断非常复杂,但最终归结为您用来调用该方法的参数的静态类型。

如果您只想在单一类型 ( Event ) 中执行此操作,您总是可以创建一个新的 GetEvent Event 中的静态方法,它刚刚调用了 Get<Event> .

关于c# - 我可以修改此泛型方法以在不丢失(我的信仰)我想要的使用方式的情况下工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1449578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com