gpt4 book ai didi

c# - 通用类型参数与参数实例的类型不同

转载 作者:行者123 更新时间:2023-11-30 22:22:37 24 4
gpt4 key购买 nike

我有这样的方法:

public static void Raise<TEvent>(TEvent eventToRaise)
where TEvent : IEvent
{
}

我这样调用该方法:

foreach (IEvent evt in entity.UncommittedEvents)
{
DomainEvents.Raise(evt);
}

我假设这是真的:

bool areSame = typeof(TEvent) == eventToRaise.GetType();

但好像不是这样。相反,它是:

bool areSame = typeof(TEvent) == typeof(IEvent);

为什么会这样?

这里的问题是我在这里“丢失”了具体事件的类型。当我将该类型参数传递给下一个方法(没有事件实例)时,我只输入“IEvent”......

最佳答案

实际上,这是有道理的。

当你说 DomainEvents.Raise(evt) , evt 的类型在编译时已知为 IEvent ,因此编译器会推断类型并将其写为 DomainEvents.Raise<IEvent>(evt) .

关于c# - 通用类型参数与参数实例的类型不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13786130/

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