Причина, по которой ваша последняя строка не будет компилироваться, заключается в том, что IDefinitionAppId
- это внутренняя , а не потому, что System.Deployment.Internal.Isolation
- это тип.
Обратите внимание, что если бы Isolation
было именем типа, вам пришлось бы использовать GetType("System.Deployment.Internal.Isolation+IDefinitionAppId")
(обратите внимание на +), поскольку именно так вложенные типы представлены в именах CLR.
Это очень просто продемонстрировать:
using System;
using System.Reflection;
public class Test
{
static void Main()
{
Assembly mscorlib = typeof(string).Assembly;
string name = "System.Deployment.Internal.Isolation.IDefinitionAppId";
Type type = mscorlib.GetType(name);
// Prints System.Deployment.Internal.Isolation
Console.WriteLine(type.Namespace);
}
}
Итак, System.Deployment.Internal.Isolation
- это пространство имен, а не тип, поэтому Assembly.GetType(...)
не находит его как тип.