首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何测试类型是否是匿名的?

如何测试类型是否是匿名的?
EN

Stack Overflow用户
提问于 2010-03-20 20:44:22
回答 5查看 19.3K关注 0票数 72

我使用以下方法将对象序列化为HTML标记。不过,我只想在类型不是匿名的情况下这样做。

代码语言:javascript
复制
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
    }
}

有人能教我怎么做到这一点吗?

谢谢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-03-20 20:50:34

来自http://www.liensberger.it/web/blog/?p=191

代码语言:javascript
复制
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

票数 75
EN

Stack Overflow用户

发布于 2012-02-22 19:51:28

快速和肮脏:

代码语言:javascript
复制
if(obj.GetType().Name.Contains("AnonymousType"))
票数 20
EN

Stack Overflow用户

发布于 2013-03-07 22:00:26

您可以只检查名称空间是否为空。

代码语言:javascript
复制
public static bool IsAnonymousType(this object instance)
{

    if (instance==null)
        return false;

    return instance.GetType().Namespace == null;
}
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2483023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档