我有一个带有泛型方法的非泛型类。此方法的泛型类型定义了输出类型,无法从使用中推断出来,因此我必须显式提供泛型类型。有时这种类型是从通用调用者的方法类型参数传递的,但在一个实例中,我必须自己显式地提供它。
问题是当我调用我明确提供的泛型类型方法调用时,它似乎没有被执行并返回一个完全不相关的类型。我无法调试此调用并获得无效结果。但它并没有破坏特别奇怪的执行。当从调用者的泛型方法类型传递泛型类型的其他地方调用相同的方法时,一切似乎都按照定义工作。
我完全失去了发生了什么。
我在接口中的方法定义(稍后在类中实现):
TRecord Update<TRecord>(int recordId, int? categoryId, string categoryName, string title)
where TRecord : Record;
我的Record
类是非抽象的,并且只有一种继承自它的类型:
public class Record : ProtectedEntity
{
...
}
public class RelatedRecord<T> : Record
{
public IList<T> Related { get; private set; }
...
}
我正在调用我的方法:
var record = myRepo.Update<Record>(...);
当执行到这一行时,我点击F11调试它,但执行只是跳转到下一句。当我检查我record
的变量时,它不是类型Record
,而是System.String
具有参数的值categoryName
。这意味着某些东西确实被执行了,但它绝对不是我的通用方法的主体。
奇怪的是,在其他任何地方,相同的调用都按预期工作。
这怎么解释,我做错了什么?