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的回答,我发现这个链接提供了一个技术性的解释,解释了它为什么会这样工作。