我使用以下方法将对象序列化为HTML标记。不过,我只想在类型不是匿名的情况下这样做。
private void MergeTypeDataToTag(object typeData)
{
if (typeData != null)
{
Type elementType = typeData.GetType();
if (/* elementType != AnonymousType */)
{
_tag.Attributes.Add("class", elementType.Name);
}
// do some more stuff
}
}
有人能教我怎么做到这一点吗?
谢谢
发布于 2010-03-20 20:50:34
来自http://www.liensberger.it/web/blog/?p=191
private static bool CheckIfAnonymousType(Type type)
{
if (type == null)
throw new ArgumentNullException("type");
// HACK: The only way to detect anonymous types right now.
return Attribute.IsDefined(type, typeof(CompilerGeneratedAttribute), false)
&& type.IsGenericType && type.Name.Contains("AnonymousType")
&& (type.Name.StartsWith("<>") || type.Name.StartsWith("VB$"))
&& type.Attributes.HasFlag(TypeAttributes.NotPublic);
}
编辑:
与扩展方法的另一个链接:Determining whether a Type is an Anonymous Type
发布于 2012-02-22 19:51:28
快速和肮脏:
if(obj.GetType().Name.Contains("AnonymousType"))
发布于 2013-03-07 22:00:26
您可以只检查名称空间是否为空。
public static bool IsAnonymousType(this object instance)
{
if (instance==null)
return false;
return instance.GetType().Namespace == null;
}
https://stackoverflow.com/questions/2483023
复制相似问题