C# 如何检查类型是否为可移植库中的结构

C# 如何检查类型是否为可移植库中的结构,c#,portable-class-library,C#,Portable Class Library,传统上,我会测试一个类型是否是struct: public void Do<TType>(TType value) { if (typeof(TType).IsValueType) { // code for structs } else { // code for non structs } } public void Do(t类型值) { if(typeof(TType).IsValueType) { //结

传统上,我会测试一个类型是否是
struct

public void Do<TType>(TType value)
{  
   if (typeof(TType).IsValueType) 
   {
      // code for structs
   }
   else
   {
      // code for non structs
   }
}
public void Do(t类型值)
{  
if(typeof(TType).IsValueType)
{
//结构的代码
}
其他的
{
//非结构化代码
}
}
但是现在我发现在我瞄准的框架的可移植类库中,
IsValueType
属性不可用。那么,人们将如何检查它是否是一个结构呢

我的目标是:

  • .NET Framework 4.5
  • ASP.NET核心5
  • 视窗8
  • Windows Phone 8.1
  • 泽马林,安卓
  • 沙马林
  • Xamarin.iOS(经典)
试试看

using System.Reflection;

typeof(TType).GetTypeInfo().IsValueType

基于@romanoza的回答,我发现这个链接提供了一个技术性的解释,解释了它为什么会这样工作。