System.Type type = Type.GetType("something");
System.Type
没有成员'IsNamespace',那么如何判断该类型是否引用了命名空间?
在编译时不知道类型"something"
。
答案 0 :(得分:3)
Type
不引用名称空间 - 它们引用类型。类型具有描述它们所在的命名空间的属性。
您可以枚举程序集/ appdomain中的所有类型,并收集/缓存唯一的名称空间。
HashSet<string> allNamespaces = new HashSet<string>(
AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(s => s.GetTypes())
.Select(t => t.Namespace)
);
bool isNamespace = allNamespaces.Contains("foo");
答案 1 :(得分:3)
它没有成员“IsNamespace”,因为名称空间不能由Type
个对象表示。以下行无法编译:
typeof(System.Linq);
假设您有一个Type
对象,您知道它不是命名空间。使用类似的字符串,GetType
如果只是命名空间就应该抛出。