首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# System.Type是命名空间吗?

C# System.Type是命名空间吗?
EN

Stack Overflow用户
提问于 2017-02-08 01:17:15
回答 2查看 1.1K关注 0票数 1
代码语言:javascript
复制
System.Type type = Type.GetType("something");

System.Type没有成员“IsNamespace”,所以如何判断类型是否引用了命名空间?

在编译时不知道"something"类型。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-08 01:20:23

它没有"IsNamespace“成员,因为名称空间不能由 objects表示。以下行无法编译:

代码语言:javascript
复制
typeof(System.Linq);

因此,假设您有一个Type对象,那么您知道它不是一个名称空间。使用这样的字符串,如果GetType只是一个名称空间,它应该抛出。

票数 3
EN

Stack Overflow用户

发布于 2017-02-08 01:19:44

Type不引用名称空间--它们指的是类型。类型具有一个属性,该属性描述它们在哪个命名空间中。

可以枚举程序集/应用域中的所有类型,并收集/缓存唯一的命名空间。

代码语言:javascript
复制
HashSet<string> allNamespaces = new HashSet<string>(
    AppDomain.CurrentDomain.GetAssemblies()
        .SelectMany(s => s.GetTypes())
        .Select(t => t.Namespace)
    );

bool isNamespace = allNamespaces.Contains("foo");
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42102994

复制
相关文章

相似问题

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