Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用GetType获取类的类型_C#_Reflection - Fatal编程技术网

C# 如何使用GetType获取类的类型

C# 如何使用GetType获取类的类型,c#,reflection,C#,Reflection,这里我使用GetType()获取eventData的类型,如下所示 public EventDescriptor(Guid id, IEvent eventData) { AggregateId = id; EventData = eventData; EventType = eventData.GetType().AssemblyQualifiedName; } 返回: "EventType": "Shared.Events.EntityCreatedEvent`1

这里我使用
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"
如何从上面只获取共享的.Model.Dto.EntityDto
是否有可用的方法或属性

尝试键入.FullName以获取所需内容-

所以在你的情况下——

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;
   }
}

我应该如何更改上述内容?已编辑-查看