Csharp/C#教程:通过c#中的reflection获得’基本’数据类型而不是奇怪的可空类型分享


通过c#中的reflection获得’基本’数据类型而不是奇怪的可空类型

我的基本需求是从LINQ to SQL查询生成的匿名类型中获取数据类型。

我有一段代码(比我能写的更聪明,因为我还没有深入研究过reflection)从匿名类型中返回数据类型,并且在linq2sql属性中标记为’not nullable’的元素非常有效。 所以,如果我有一个字符串,它将作为System.String返回。 但是,当元素可以为空时,我最终会得到它的“全名”:

{Name =“Nullable 1" FullName = "System.Nullable 1 [[System.Decimal,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]”}

在这种情况下,我想要提取的是System.Decimal类型(在字符串或其他情况下,我只想要System.String)。 我查看了属性,找不到任何似乎存储它的东西。

  private static Dictionary GetFieldsForType(IEnumerable data) { object o = data.First(); var properties = o.GetType().GetProperties(); return properties.ToDictionary(property => property.Name, property => property.PropertyType); } 

LINQ查询(我认为这不重要):

 var theData = from r in db.tblTestEdits select new { myitem = r.textField, mydecimal = r.decimalField }; 

我发现这个链接似乎试图解决类似的问题。
https://ysgitdiary.blogspot.com/2010/02/blog-post.html

虽然它似乎返回类型的“字符串”而不是实际类型,这是我需要的。 不知道如何转换这样的东西。

非常感谢大家。

 private static Type GetCoreType(Type type) { if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) return Nullable.GetUnderlyingType(type); else return type; } 

你想要这样的东西

上述就是C#学习教程:通过c#中的reflection获得’基本’数据类型而不是奇怪的可空类型分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

  Type targetType; bool isNullable; // Do we have a nullable type? if (type.IsGenericType && type.GetGenericTypeDefinition().Equals(typeof(Nullable<>))) { isNullable = true; targetType = type.GetGenericArguments()[0]; } else { isNullable = false; targetType = type; } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/989999.html

(0)
上一篇 2021年12月24日
下一篇 2021年12月24日

精彩推荐