Где-то между ревизией 952 и текущей сломалась возможность пользовать тайпаксессор интерфейсов для вытаскивания полей объектов, унаследованных от этих интерфейсов
При том валится каким-то жутким исключением, то "System.EntryPointNotFoundException : Точка входа не найдена" то "ExecutionEngineException"
тест:
[MapField("MasterId", "Master.MasterId")]
public interface IMaster2
{
[Relation]
Master2 Master
{
get;
set;
}
}
[TableName("Master")]
public abstract class Master2
{
[PrimaryKey]
public abstract int MasterId {get; set;}
[Relation(Destination=typeof(Detail2))]
public abstract List<Detail2> Details {get; set;}
public abstract string Name {get; set;}
}
[TableName("Detail")]
public abstract class Detail2 : IMaster2
{
[PrimaryKey, MapField("Id")]
public abstract int DetailId {get; set;}
public abstract Master2 Master
{
get;
set;
}
}
[Test]
public void InterfaceTest()
{
var ta = TypeAccessor<IMaster2>.Instance;
var ta2 = TypeAccessor<Detail2>.Instance;
var d2 = TypeAccessor<Detail2>.CreateInstance();
var m = ta2["Master"].GetValue(d2); // OK
Assert.IsNotNull(m);
m = ta["Master"].GetValue(d2); // Exception
Assert.IsNotNull(m);
}
Здравствуйте, ili, Вы писали:
ili>Где-то между ревизией 952 и текущей сломалась возможность пользовать тайпаксессор интерфейсов для вытаскивания полей объектов, унаследованных от этих интерфейсов
В файле Source\TypeBuilder\Builders\TypeAccessorBuilder.cs строчку 384:
if (!methodType.IsClass)
заменить на
if (methodType.IsValueType)
Фикс будет позже.
ЗЫ. Всё-таки git — вещь. Проблемная ревизия нашлась за пять минут. Интересно, в меркуриал есть bisect?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, andrex, Вы писали:
IT>>ЗЫ. Всё-таки git — вещь. Проблемная ревизия нашлась за пять минут. Интересно, в меркуриал есть bisect?
A>Вот http://www.selenic.com/mercurial/hg.1.html#bisect A>Похоже или в git под этим что то другое подразумевается?
Оно. А из тортилки доступно?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Фикс будет позже.
IT>ЗЫ. Всё-таки git — вещь. Проблемная ревизия нашлась за пять минут. Интересно, в меркуриал есть bisect?
может git, конечно и вещь, нооо, такого он не отловит
внёс исправление. теперь этот наш тест валится так:
System.AccessViolationException : Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.
Здравствуйте, ili, Вы писали:
ili>внёс исправление. теперь этот наш тест валится так: ili>System.AccessViolationException : Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.
Странно. У меня твой тест нормально проходит.
Если нам не помогут, то мы тоже никого не пощадим.