У меня есть проект с именем «Test.LiveModel» (Test.LiveModel.dll
), и его версия 8.0.7.0 в моем решении, которое содержит 25 проектов.Я могу видеть информацию Test.LiveModel
в AssemblyInfo.cs
.У меня есть две категории объектов с именами «категория базового класса» и «категория пользовательского класса», которые отображаются в пользовательском интерфейсе моего приложения.Я показываю это через свойство, которое имеет класс Type
Теперь я рассматриваю один объект категории базового класса с именем «Сервер» и один определенный пользователем объект категории класса RoundedTree
.Когда я устанавливаю значение «Сервер» в свойстве в Grid после сохранения, когда я перезапускаю свое приложение, я вижу сохраненное значение, но для «RoundedTree», которое не происходит из-за типа, становится пустым.Поэтому я сделал тщательный анализ и узнал, что проблема в ToType()
методе, показанном ниже. Это ToType()
мето
Для базового класса Server
xmlSerializableType.Name
я получаю как Test.LiveModel.Server
иAssemblyName
Я получаю как Test.LiveModel, Version=8.0.7.0, Culture=neutral, PublicKeyToken=23bd062a94e26d58
и type
Я получаю, используя Type.GetType
как type = {Name = "Server" FullName = "Test.LiveModel.Server"}
Но для определенного пользователем класса xmlSerializableType.Name
Я получаю как _Rounded_Tree
.'type' Я получаю как null
, используя Type.GetType
.AssemblyName
Я получаю как _Rounded_TreeTest-Machine, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
, но даже assembly.GetType
Я получаю как ноль.В чем причина этого?Почему я получаю версию сборки 0.0.0.0?Я имею в виду полную сборку _Rounded_TreeTest-Machine, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
.
Это метод CreateType()
, который создаст сборку и наберет myTypeBuilder
для пользовательского класса:
public Type CreateType()
{
// Create the assembly name by appending the machine name to the typename.
myAsmName.Name = this.TypeName + Environment.MachineName;
// Define assembly that can be executed but not saved
this.UserClassAssemblyBuilder = myDomain.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run);
// Create dynamic module with symbol information
this.UserClassModuleBuilder = this.UserClassAssemblyBuilder.DefineDynamicModule("userdefinedmodule", true);
Так вот мой вопрос:если реальный Dll имеет некоторый номер версии, а пользовательская сборка класса имеет версию 0.0.0.0, является ли это причиной того, что я получаю тип как ноль после использования Type.GetType
и assembly.GetType
метода?