Assembly.GetAssembly предполагает, что у вас есть экземпляр типа, а Type.GetType предполагает, что у вас есть полное имя типа, которое включает имя сборки.
Если у вас есть только имя базового типа, вам нужно сделать что-то более похожее на это:
public static String GetAssemblyNameContainingType(String typeName)
{
foreach (Assembly currentassembly in AppDomain.CurrentDomain.GetAssemblies())
{
Type t = currentassembly.GetType(typeName, false, true);
if (t != null) {return currentassembly.FullName;}
}
return "not found";
}
Это также предполагает, что ваш тип объявлен в корне. Вам нужно будет указать пространство имен или включающие типы в имени или выполнить итерацию таким же образом.