Может это уже известная проблеба. TypeAccessor пытается второй раз создать то же тип
namespace BltGym
{
public class Gym
{
public abstract class Entity
{
public abstract int Id { get; set; }
public abstract String Name { get; set; }
public static Entity CreateInstance() { return TypeAccessor<Entity>.CreateInstanceEx(); }
}
public abstract class EntityAccessor : DataAccessor<Entity>
{
public new abstract int Insert(Entity entiry);
public static EntityAccessor CreateInstance(DbManager dbManager)
{
return DataAccessor.CreateInstance<EntityAccessor>(dbManager);
}
}
public static void Main(string[] args)
{
TypeFactory.SetGlobalAssembly(@"c:\tmp\BltGym.dll");
DbManager.AddDataProvider(/*...*/);
DbManager.AddConnectionString(/*...*/);
DbManager db = new DbManager();
Entity entity = Entity.CreateInstance();
EntityAccessor accessor = EntityAccessor.CreateInstance(db);
accessor.Insert(entity);
}
}
}
в результате получам
TypeBuilderException
Could not build the 'BltGym.Gym.BLToolkitExtension.Entity' type: Duplicate type name within an assembly.
То есть что происходит. Entity entity = Entity.CreateInstance() инициирует вызов
который зоздаёт BltGym.Gym.BLToolkitExtension.Entity а затем BltGym.Gym.BLToolkitExtension.Entity.TypeAccesssor. Далее accessor.Insert(entity) внутри себя создаёт ObjectMapper для entity (типа BltGym.Gym.BLToolkitExtension.Entity) что приводит к вызову
Здравствуйте, Sashko, Вы писали:
S>Может это уже известная проблеба. TypeAccessor пытается второй раз создать то же тип
SetGlobalAssembly пока является прототипом и предназначена по идее для сохранения сгенерированных классов в одном месте и их дальнейшего повторного использования.
Но за найдённый глюк спасибо.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: TypeAccessor: Duplicate type name within an assembly.
Здравствуйте, IT, Вы писали:
S>>Может это уже известная проблеба. TypeAccessor пытается второй раз создать то же тип IT>SetGlobalAssembly пока является прототипом и предназначена по идее для сохранения сгенерированных классов в одном месте и их дальнейшего повторного использования.
Я её вызывал только что б сразу стало видно что один и тот же TypeAccessor создаётся второй раз. Точнее было так, удивился что второй раз создался TypeAccessor для обвёртки над моим абстрактным типом, и всё это работало, так как лежало в разных assembly и следовательно полные имена типов были разные, вот и решил проверить что же будет если все типы будут создаваться в одной assembly.
Re[3]: TypeAccessor: Duplicate type name within an assembly.
Здравствуйте, Sashko, Вы писали:
S>Я её вызывал только что б сразу стало видно что один и тот же TypeAccessor создаётся второй раз. Точнее было так, удивился что второй раз создался TypeAccessor для обвёртки над моим абстрактным типом, и всё это работало, так как лежало в разных assembly и следовательно полные имена типов были разные, вот и решил проверить что же будет если все типы будут создаваться в одной assembly.
Буду разбираться.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: TypeAccessor: Duplicate type name within an assembly.