我在这里使用 GetType()
来获取 eventData
的类型,如下所示,
public EventDescriptor(Guid id, IEvent eventData)
{
AggregateId = id;
EventData = eventData;
EventType = eventData.GetType().AssemblyQualifiedName;
}
返回:
"EventType":
"Shared.Events.EntityCreatedEvent`1[[Shared.Model.Dto.EntityDto, Shared,
Version=1.0.6928.25697, Culture=neutral, PublicKeyToken=null]], Shared,
Version=1.0.6928.25697, Culture=neutral, PublicKeyToken=null"
我怎样才能从上面只得到 Shared.Model.Dto.EntityDto
?
有没有可用的方法或属性?
最佳答案
试试 Type.FullName
来获得你需要的 -
https://learn.microsoft.com/de-de/dotnet/api/system.type.fullname?view=netframework-4.7.2
所以在你的情况下 -
public EventDescriptor(Guid id, IEvent eventData)
{
AggregateId = id;
EventData = eventData;
EventType = eventData.GetType().FullName;
}
如果你想提取 IEvent 实例的泛型参数的类型,你可以这样做 -
public EventDescriptor(Guid id, IEvent eventData)
{
AggregateId = id;
EventData = eventData;
if (!eventData.GetType().IsGenericType)
{
EventType = eventData.GetType().FullName;
}
else
{
// notice - this assumes we can take the FIRST generic argument, we don't check for others here
EventType = eventData.GetType().GetGenericArguments().First().FullName;
}
}
关于c# - 如何使用 GetType 获取类的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53873782/