Как получить тип класса с помощью GetType - PullRequest
0 голосов
/ 20 декабря 2018

Здесь я использую 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 из вышесказанного?
Есть ли какой-либо метод или свойства доступны?

1 Ответ

0 голосов
/ 20 декабря 2018

Попробуйте Type.FullName, чтобы получить то, что вам нужно - https://docs.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;
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...