Re[24]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.12.11 18:17
Оценка: +1 :)
Здравствуйте, _Claus_, Вы писали:

_C_>поэтому мне хотелось бы, если возможно, получить ответ, почему я не имею, того что хочу, с моим кодом/проектом, без правок и добавлений.


Залез в проекты чтобы посмотреть почему ссылки кривые на немерловые сбокри... И что же я там увидил?
    <StartProgram>$(ProgramFiles)\Nemerle\net-4.0\NCC.exe</StartProgram>
    <WorkingDirectory>C:\MyProjects\MacroTest40\MacroTest</WorkingDirectory>
    <CmdArgs>Main.n -m:C:\MyProjects\DBLib\DBLib\bin\Debug\DBLib.dll</CmdArgs>


У меня нет слов.

Тым нам тут раз 10 сказал, что сборку подключал как Reference, но что мы видим?

"-m:...\DBLib.dll"

-m, -macros:STRING Load macros from given library (without loading types from library into the scope)

(с) ncc -h

Любому ежику понятно, что при этом подключении сборки типов из нее не увидишь.

Вообще, не ясно зачем было использовать типы из макро-сборки.

В любом, случае, в консоли должно было быть видно сообщение об ошибке (что тип не найден).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 16.12.11 10:57
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _Claus_, Вы писали:


_C_>>никаких ошибок не видел, в списке ошибок и предупреждений нет и компилируется.


VD>Странно.


_C_>>на скрине видно же, что с типом не лажаю.


VD>Упорный ты товарищ!

VD>Я вижу обратное. ty описывает "object". Ежу понятно что object не вэлью-тип и что у него нет полей.

вообще это странность меня тоже удивляет, какой object в поле с типом? Выше моего понимания.
я списывал на странности отображения.

мыло твое с ходу не нашел. вот выложил zip проектов. надеюсь, это поможет.
Re[17]: доступ к классам и структурам в Reference из макроса
От: hardcase Пират http://nemerle.org
Дата: 16.12.11 14:30
Оценка: +1
Здравствуйте, _Claus_, Вы писали:

_C_>мыло твое с ходу не нашел.


Конечно, на ник VladD2 кликнуть невероятно сложно
/* иЗвиНите зА неРовнЫй поЧерК */
Re[21]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.12.11 00:33
Оценка: :)
Здравствуйте, _Claus_, Вы писали:

_C_>дорогой Vlad! прежде чем подымать я перепробовал и public и все остальное. ессно с public то же самое.


Я добавил в твоем проекте public, добавил вывод информации о полях и все чудесным образом заработало.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 15.12.11 00:40
Оценка:
на этапе BeforeTypedMembers не удается получать информацию о классах или структурах в используемых DLL.
полученный обычным способом через typer.BindFixedType(t).TypeInfo приводится к ExternalTypeInfo, однако по
полям там пусто, а свойства-флаги неверны.


     match(ty)              
        | estruct is LibraryReference.ExternalTypeInfo => estruct.GetFields(..) //пусто и неверно


способ есть?
Re: доступ к классам и структурам в Reference из макроса
От: hardcase Пират http://nemerle.org
Дата: 15.12.11 12:51
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>на этапе BeforeTypedMembers не удается получать информацию о классах или структурах в используемых DLL.


Зачем?
/* иЗвиНите зА неРовнЫй поЧерК */
Re: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.12.11 13:31
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>на этапе BeforeTypedMembers не удается получать информацию о классах или структурах в используемых DLL.

_C_>полученный обычным способом через typer.BindFixedType(t).TypeInfo приводится к ExternalTypeInfo, однако по
_C_>полям там пусто, а свойства-флаги неверны.

Это ты что-то накосячил. Информация о внешних типах доступна на самых ранних стадиях.

_C_>
_C_>     match(ty)              
_C_>        | estruct is LibraryReference.ExternalTypeInfo => estruct.GetFields(..) //пусто и неверно
_C_>


Приводить тип к ExternalTypeInfo бессмысленно и не верно. Он в будущем вообще будет недоступн. Приводи к TypeInfo.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 15.12.11 13:39
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, _Claus_, Вы писали:


_C_>>на этапе BeforeTypedMembers не удается получать информацию о классах или структурах в используемых DLL.


H>Зачем?


мне нужно в зависимости от их типа и содержимого генерить классы и методы поддержки. для датабазы.
Re[2]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 15.12.11 14:11
Оценка:
VD>Приводить тип к ExternalTypeInfo бессмысленно и не верно.

надеялся что-то поможет.

VD> Он в будущем вообще будет недоступн. Приводи к TypeInfo.


с этого я начал. не работает. членов 0, из флагов для меня интересен IsValueType, всегда false.
проверил в фазе WithTypedMembers — результат тот же.

делаю так

def ty = typer.BindFixedType(fld_type)
def members = ty.GetFields(BindingFlags.Public %| BindingFlags.NonPublic %| BindingFlags.Instance )
Re[3]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.12.11 14:51
Оценка:
Здравствуйте, _Claus_, Вы писали:

VD>> Он в будущем вообще будет недоступн. Приводи к TypeInfo.


_C_>с этого я начал. не работает. членов 0,


Значит ты где-то накосячил. Подобный код работает в сотни мест.

Скорее всего ты не верно флаги в GetMembers() задал. Это самая распространенная ошибка.
Так же, возможно, ты пытался вызвать GetMembers() у типа который с исходников собран.

_C_> из флагов для меня интересен IsValueType, всегда false.

_C_>проверил в фазе WithTypedMembers — результат тот же.

Точно что-то напутал.

_C_>делаю так


_C_>def ty = typer.BindFixedType(fld_type)

_C_>def members = ty.GetFields(BindingFlags.Public %| BindingFlags.NonPublic %| BindingFlags.Instance )

А ты уверен, что в fld_type не находится тип собранный из исходников? В прочем на WithTypedMembers он должен был дать список членов.

Короче, воспроизведи это дело в отдельном маленьком макросе и пришли его код сюда или мне на мыло. Я погляжу что у тебя там не так.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 15.12.11 16:03
Оценка:
VD>Короче, воспроизведи это дело в отдельном маленьком макросе и пришли его код сюда или мне на мыло. Я погляжу что у тебя там не так.


 [MacroUsage(MacroPhase.BeforeTypedMembers, MacroTargets.Method)]\
  macro TEST(typeBuilder : TypeBuilder, _ : ClassMember.Function, expr : PExpr)\
  syntax ("TEST", expr)
  
    Test.Former(typeBuilder, expr, Macros.ImplicitCTX())
    
  module Test
    public Former(tb : TypeBuilder, e : PExpr, typer : Typer) : void
          
      match (e)
      
        | <[ $(name : name) : $type ]> =>           
           def ty = typer.BindFixedType(type).TypeInfo
           def s = ty.GetFields(BindingFlags.Public %| BindingFlags.NonPublic %| BindingFlags.Instance )
           _ = s
        | _ =>  Message.Error(e.Location, <#Expected: name : type #>)


вызов


class dum
  f = ""
  g = 2  
  TEST z : OutType


OutType — любой внешний тип. особенно интересуют struct, для которого IsValueType false.
Re[5]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.12.11 17:27
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>
_C_>           def s = ty.GetFields(BindingFlags.Public %| BindingFlags.NonPublic %| BindingFlags.Instance )
_C_>


Кажется я понял в чем дело. GetFields() отсекает недоступные из текущей сборки поля. А типов с публичными полями ты во всем фрэймворке не найдешь.

А что ты дальше будешь делать со знанием о том, что в типе есть недоступные тебе поля? Обратиться ты к ним не сможешь ведь.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 15.12.11 17:54
Оценка:
VD>А что ты дальше будешь делать со знанием о том, что в типе есть недоступные тебе поля? Обратиться ты к ним не сможешь ведь.

да при чем тут. заведи свой класс или struct с public полями из внешней либы, вот добавь в макромодуль это


struct OutType
    public x : int
    public y : string


и увидишь проблему
Re[7]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.12.11 18:20
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>да при чем тут. заведи свой класс или struct с public полями из внешней либы, вот добавь в макромодуль это

_C_>
_C_>struct OutType
_C_>    public x : int
_C_>    public y : string
_C_>

_C_>и увидишь проблему

Завел... Попробовал. Проблем нет.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 15.12.11 18:30
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _Claus_, Вы писали:


_C_>>да при чем тут. заведи свой класс или struct с public полями из внешней либы, вот добавь в макромодуль это

_C_>>
_C_>>struct OutType
_C_>>    public x : int
_C_>>    public y : string
_C_>>

_C_>>и увидишь проблему

VD>Завел... Попробовал. Проблем нет.


код точно тот, который я разместил?
в GetFields есть поля?
в IsValueVisible == true?

если все да, у нас либо разные компиляторы, либо причина в том, что другой код, который болтается в проекте и никак не связал
логически, влияет на вычисления. В качестве эксперимента я могу сделать чистый проект с одним макросом. Стоит делать?
Re[9]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.12.11 19:50
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>код точно тот, который я разместил?


Да.

_C_>в GetFields есть поля?


Да.

_C_>в IsValueVisible == true?


Мой телепатер подсказывает, что речь видимо идет о:
field.GetMemType().IsValueType


Проверил и его:
using Nemerle;
using Nemerle.Collections;
using Nemerle.Compiler;
using Nemerle.Compiler.Parsetree;
using Nemerle.Compiler.Typedtree;
using Nemerle.Text;
using Nemerle.Utility;

using System;
using System.Collections.Generic;
using System.Linq;


namespace MacroLibrary
{
  [MacroUsage(MacroPhase.BeforeTypedMembers, MacroTargets.Method)]
  macro TEST(typeBuilder : TypeBuilder, method : ClassMember.Function, expr : PExpr)
  syntax ("TEST", expr) 
  {
    TESTImpl.DoTransform(Macros.ImplicitCTX(), typeBuilder, method, expr)
  }
  
  module TESTImpl
  {
    public DoTransform(typer : Typer, _typeBuilder : TypeBuilder, _method : ClassMember.Function, expr : PExpr) : void
    {
      Macros.DefineCTX(typer);
      
      match (expr)
      {
        | <[ $(_ : name) : $type ]> =>           
          def ty = typer.BindFixedType(type).TypeInfo;
          def fields = ty.GetFields(BindingFlags.Public %| BindingFlags.NonPublic %| BindingFlags.Instance);
          foreach (field in fields)
            Message.Hint(expr.Location, $"Field: $(field.Name) IsValueVisible = $(field.GetMemType().IsValueType)");
           
        | e =>  Message.Error(e.Location, <#Expected: name : type #>)
      }
    } 
  }
}


Все, ОК. Выводит:

Main.n(14,8): warning : hint: Field: x IsValueVisible = True
Main.n(14,8): warning : hint: Field: y IsValueVisible = False


_C_>если все да, у нас либо разные компиляторы,


Это вряд ли.

_C_>либо причина в том, что другой код, который болтается в проекте и никак не связал логически, влияет на вычисления.


Причины могут быть разные. Одна из них чья-то невнимательность. Например, ты тип описал в том же проекте.
Я бы начал с проверки этого.

_C_>В качестве эксперимента я могу сделать чистый проект с одним макросом. Стоит делать?


Не думаю, что это что-то изменит. Но попробуй. По крайней мере будет ясно в чем проблема.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 15.12.11 21:36
Оценка:
VD>Причины могут быть разные. Одна из них чья-то невнимательность. Например, ты тип описал в том же проекте.
VD>Я бы начал с проверки этого.

Я написал тестовые типы в проекте макросов. они для компилируемого исходника внешние или внутренние?
я так подозревал, что внешние. может дело в этом?
Re[10]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 15.12.11 21:39
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _Claus_, Вы писали:


_C_>>код точно тот, который я разместил?


VD>Да.


_C_>>в GetFields есть поля?


VD>Да.


_C_>>в IsValueVisible == true?


VD>Мой телепатер подсказывает, что речь видимо идет о:

VD>
VD>field.GetMemType().IsValueType
VD>


это откуда этот field вдруг взялся?
я имею ввиду:

def ty = typer.BindFixedType(type).TypeInfo

ty.IsValueType ??
Re[10]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 15.12.11 22:06
Оценка:
вот дебужный скрин. может глядя на него, особенно на окно Локальные, ты поймешь в чем дело?
http://imageshost.ru/photo/224883/id1148742.html
Re[11]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.12.11 22:31
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>Я написал тестовые типы в проекте макросов. они для компилируемого исходника внешние или внутренние?


Внешние, если сборка подключена через обычный референс, естественно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.12.11 22:37
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>вот дебужный скрин. может глядя на него, особенно на окно Локальные, ты поймешь в чем дело?

_C_>http://imageshost.ru/photo/224883/id1148742.html

Ну, да. Так то оно понятно. Тут телепатия не нужна.

Дело в криво написанном имени типа (при объявлении псевдо-поля) или не указанном (указанном криво, не открытом) пространстве имен.

Предлагаю отгадать как я смог об этом догадаться, при условии, что код этот я даже не видел.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 15.12.11 22:50
Оценка:
VD>Дело в криво написанном имени типа (при объявлении псевдо-поля) или не указанном (указанном криво, не открытом) пространстве имен.

VD>Предлагаю отгадать как я смог об этом догадаться, при условии, что код этот я даже не видел.


все перепроверено 10 раз, еще до конкурса "Ану-ка парни", с которым была надежда получить заодно это решение.

вот скрин, который убедит, что имена в порядке, иначе там бы не было останова. (структуру перенес рядом).

http://imageshost.ru/photo/235824/id1148761.html
Re[13]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.12.11 23:14
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>все перепроверено 10 раз, еще до конкурса "Ану-ка парни", с которым была надежда получить заодно это решение.

_C_>вот скрин, который убедит, что имена в порядке, иначе там бы не было останова. (структуру перенес рядом).
_C_>http://imageshost.ru/photo/235824/id1148761.html

Это тот же самый скрин. Он убеждает только том, что в type у тебя некорректный тип.

Обрати внимание на значение переменной ty. Там не тот тип что ты хотел, а object. "object" после связывания появляется когда тип неудалось связать. При этом еще должно было появиться сообщение об ошибке. Ты его благополучно пропустил.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 15.12.11 23:45
Оценка:
никаких ошибок не видел, в списке ошибок и предупреждений нет и компилируется.
на скрине видно же, что с типом не лажаю. и сам тип OutType тоже показан, что не глюк. перед этим пробовал другие типы, которые
у меня рядом описаны — то же самое.

я вижу что там object и также вижу, что там он видит таки, что это ExternalType (см. тип), и мой косяк я тут не вижу. привожу тебе Main:

#pragma warning disable 10005
#pragma indent
using System
...

using DBLib //там OutType и макросы
    
class dum
  f = ""
  g = 2  
  TEST z : OutType

...




может ну их эти external struct? отдам стандартному сериализатору и дело с концом.
или кого из ребят попросить, чтобы сказали, у них как у меня или как у тебя. и тогда списать на мою черную полосу.
Re[15]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.12.11 02:13
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>никаких ошибок не видел, в списке ошибок и предупреждений нет и компилируется.


Странно.

_C_>на скрине видно же, что с типом не лажаю.


Упорный ты товарищ!
Я вижу обратное. ty описывает "object". Ежу понятно что object не вэлью-тип и что у него нет полей.

_C_> и сам тип OutType тоже показан,


Что тут показано? То что текст был "OutType"? Ну, что с того? Может быть 100500 причин почем этот текст не сбиндился на тип который ты подразумевал.

Короче, присылай мне свой проект на мыло. Завтра погляжу.

Но и так очевидно, что проблема в не в коде макроса.

_C_> что не глюк. перед этим пробовал другие типы, которые у меня рядом описаны — то же самое.


Я бы тебе посоветовал перестать изгаляться с отступным синтаксисом. Тогда бы был полноценный интеллисенс и часть ошибок просто нельзя было бы совершить.

_C_>я вижу что там object и также вижу, что там он видит таки, что это ExternalType (см. тип), и мой косяк я тут не вижу.


А чей?

_C_>привожу тебе Main:


В этом нет особого смысла. Скорее имеет смысл приводить описание OutType, дело может быть не в нем, а в том, что библиотека не подключена. Так что надо смотреть на весь проект.

_C_>может ну их эти external struct? отдам стандартному сериализатору и дело с концом.




_C_>или кого из ребят попросить, чтобы сказали, у них как у меня или как у тебя. и тогда списать на мою черную полосу.


Лучше голосование устроить.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: доступ к классам и структурам в Reference из макроса
От: hardcase Пират http://nemerle.org
Дата: 16.12.11 07:53
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>я вижу что там object и также вижу, что там он видит таки, что это ExternalType (см. тип), и мой косяк я тут не вижу. привожу тебе Main:


TypeInfo для System.Object всегда будет представлена экземпляром ExternalTypeInfo, так как System.Object объявлен в mscorlib.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[15]: доступ к классам и структурам в Reference из макроса
От: hardcase Пират http://nemerle.org
Дата: 16.12.11 07:57
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>
_C_>#pragma warning disable 10005
_C_>#pragma indent
_C_>using System
_C_>...

_C_>using DBLib //там OutType и макросы
    
_C_>class dum
_C_>  f = ""
_C_>  g = 2  
_C_>  TEST z : OutType

_C_>...
_C_>



Если ты подключил макросы как macro reference то типов (в т.ч. и OutType) из макросборок тебе не видать как своих ушей.
Из этих сборок берутся только макросы. Так что складывай свою структуру в отдельную dll и подключай ее к компилируемому проекту.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[16]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 16.12.11 11:09
Оценка:
H>Если ты подключил макросы как macro reference то типов (в т.ч. и OutType) из макросборок тебе не видать как своих ушей.
H>Из этих сборок берутся только макросы. Так что складывай свою структуру в отдельную dll и подключай ее к компилируемому проекту.

как Reference подключена изначально.
Re[17]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.12.11 14:36
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>вообще это странность меня тоже удивляет, какой object в поле с типом? Выше моего понимания.

_C_>я списывал на странности отображения.

_C_>мыло твое с ходу не нашел. вот выложил zip проектов. надеюсь, это поможет.


Ну, и что я вижу в это проекте?
  public struct OutType
    s : int
    f : string


Где здесь публичные поля то?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.12.11 15:26
Оценка:
Здравствуйте, _Claus_, Вы писали:

H>>Из этих сборок берутся только макросы. Так что складывай свою структуру в отдельную dll и подключай ее к компилируемому проекту.


_C_>как Reference подключена изначально.


С Reference все нормально. Но скриншот не соответствует тому что в проекте. А в типе поля таки private.

Я тебе сразу сказал, что нужно смотреть на описание типа. Ты в очередной раз меня проигнорировал.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 16.12.11 20:46
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _Claus_, Вы писали:


H>>>Из этих сборок берутся только макросы. Так что складывай свою структуру в отдельную dll и подключай ее к компилируемому проекту.


_C_>>как Reference подключена изначально.


VD>С Reference все нормально. Но скриншот не соответствует тому что в проекте. А в типе поля таки private.


VD>Я тебе сразу сказал, что нужно смотреть на описание типа. Ты в очередной раз меня проигнорировал.


non-public флаг стоит это 1) с public работать не будет также!!
Re[18]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 16.12.11 20:52
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, _Claus_, Вы писали:


_C_>>мыло твое с ходу не нашел.


H>Конечно, на ник VladD2 кликнуть невероятно сложно


внутри здесь файлы не аттачаться. я искал гуглоадрес — он не показывается в профиле из конфы
Re[19]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.12.11 21:10
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>non-public флаг стоит это 1) с public работать не будет также!!


А, ты поставь полям public. Что гадать то?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 16.12.11 21:53
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _Claus_, Вы писали:


_C_>>non-public флаг стоит это 1) с public работать не будет также!!


VD>А, ты поставь полям public. Что гадать то?


дорогой Vlad! прежде чем подымать я перепробовал и public и все остальное. ессно с public то же самое.
Re[22]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 17.12.11 11:32
Оценка:
VD>добавил вывод информации о полях

это как ?? чего не хватает?
Re[21]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 17.12.11 11:39
Оценка:
в выложенном проекте выставлена точка основа после получения списка.
если ничего не добавлять, кроме public в поля OutType — список пустой?
у меня пустой.

а если добавлять , то что?
Re[22]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 17.12.11 11:58
Оценка:
VD>Я добавил в твоем проекте public, добавил вывод информации о полях и все чудесным образом заработало.

вот скрин с public — это ничего не меняет. обрати внимание на содержимое s в Локальном окне. ty.IsValueType == false.

тупик?
Re[23]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.12.11 12:30
Оценка:
Здравствуйте, _Claus_, Вы писали:

VD>>Я добавил в твоем проекте public, добавил вывод информации о полях и все чудесным образом заработало.


_C_>вот скрин с public — это ничего не меняет. обрати внимание на содержимое s в Локальном окне. ty.IsValueType == false.


У тебя какая-то хрень в проекте.

В том проекте что ты дал по ссылке я поправил ссылки на немерловые сборки (которые, почему-то, были прибиты гвоздями), добавил public полям, и вставил цикл который выводит информацию о полях в виде хинтов.

Кстати, нескромный вопрос... Как ты макрос под отладку запускаешь?

ЗЫ

Зачем проверять IsValueType у System.Object?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.12.11 13:15
Оценка:
Здравствуйте, _Claus_, Вы писали:

H>>Конечно, на ник VladD2 кликнуть невероятно сложно


_C_>внутри здесь файлы не аттачаться. я искал гуглоадрес — он не показывается в профиле из конфы


Слушай ты меня извини за грубость, но это уже какой-то пипец.

Как можно не найти мыло которое находится в самом верху профайла доступ к которому получается одним нажатием на ник в сообщении?

Какой на фиг гуглоадрес? Прочитай внимательно что тебе написали "ник VladD2 кликнуть".

Все твои проблемы вызваны вот этим. Ты просто не слушаешь что тебе говорят.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: доступ к классам и структурам в Reference из макроса
От: Mumitroller Беларусь  
Дата: 17.12.11 14:19
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Как можно не найти мыло которое находится в самом верху профайла доступ к которому получается одним нажатием на ник в сообщении?


А в Janus'e это не так — по клику на ник в сообщении открывается страничка "Основная информация о пользователе", на которой адреса электронной почты нет. Но на ней есть ссылка "Посмотреть карточку на сайте RSDN", по клику на которой открывается страничка с адресом электронной почты и другой инфой.

Mumitroller
... << RSDN@Home 1.2.0 alpha 4 rev. 0>>
Re[22]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.12.11 14:54
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>в выложенном проекте выставлена точка основа после получения списка.


Точка основа не может быть выложена с проектом. Она у тебя локально хранится.

_C_>если ничего не добавлять, кроме public в поля OutType — список пустой?


Если ничего не добавлять, то туда не попасть. Я даже не заходил отладчиком. Я добавил код (что тебе приводил выше) выводящий информацию о полях в виде хинов.

_C_>у меня пустой.

_C_>а если добавлять , то что?

Еще раз спрашиваю — как ты подпадаешь в отладочный режим?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 18.12.11 14:50
Оценка:
VD>Еще раз спрашиваю — как ты подпадаешь в отладочный режим?

в окне Обозреватель
1) сделать DBlib запускаемым
2) щелкнуть на DBLib правой клавишей, выбрать Отладка-> Запустить новый экземпляр

мне важно знать, что с моим кодом не так, потому что когда ты начинаешь править или вносить изменения
ты пользуешься знаниями, которые я пытаюсь получить.

поэтому мне хотелось бы, если возможно, получить ответ, почему я не имею, того что хочу, с моим кодом/проектом, без правок и добавлений.

второй вариант — хз его знает, устроит тоже, но в этом случае мне будет проблематично двигаться дальше.

спасибо за терпение!
Re[24]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.12.11 17:49
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>в окне Обозреватель

_C_>1) сделать DBlib запускаемым
_C_>2) щелкнуть на DBLib правой клавишей, выбрать Отладка-> Запустить новый экземпляр

Новый экзепляр чего? Какой ехе-ник. Что в параметрах командной строки?
Может у тебя просто при отладке что-то старое запускается.

Попробуй просто поставить assert2(false).

_C_> мне важно знать, что с моим кодом не так, потому что когда ты начинаешь править или вносить изменения

_C_> ты пользуешься знаниями, которые я пытаюсь получить.

Я тебе уже раза три описал то что я сделал. Давай еще раз:
1. Я обновил ссылки на сборки немерла, которые у тебя, почему-то, были заданы жестко.
2. Добавил к полям структуры public.
3. Добавил в твой код цикл в котором информацию о полях выводил с помощью Message.Hint() (чтобы отладчик не запускать).

Другими словами — никаких существенных изменений.

_C_>поэтому мне хотелось бы, если возможно, получить ответ, почему я не имею, того что хочу, с моим кодом/проектом, без правок и добавлений.


Я бы тебе посоветовал сделать все с нуля без выкрутасов и оптимизаций:
1. Создай пустой проект и новый макрос. Причем делай это визардами, а не в рукопашную.
2. Не используй этот долбенный индент-синтакс, чтобы иметь возможность пользоваться интеллисенсом.
3. Вместо использования отладчика используй вывод информации с помощью Message.Hint(). Тем самым исключишь проблемы которые могут быть вызваны отладкой.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[25]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 18.12.11 22:02
Оценка:
VD>Тым нам тут раз 10 сказал, что сборку подключал как Reference, но что мы видим?

скопировал командную как было из учебного проекта, видел что в проекте MainTest у меня DBLib стоит в Reference, а не в Macro Reference,
и с чистой совестью утверждал, что все ок.

VD>Любому ежику понятно, что при этом подключении сборки типов из нее не увидишь.

теперь понятно и мне!

VD>Вообще, не ясно зачем было использовать типы из макро-сборки.

чтобы не создавать отдельный проект для столь незначительного момента.

Спасибо большое!!
Re[26]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.12.11 22:15
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>скопировал командную как было из учебного проекта, видел что в проекте MainTest у меня DBLib стоит в Reference, а не в Macro Reference,

_C_>и с чистой совестью утверждал, что все ок.

Мы программисты. Мы должны верить только фактам. А все предположения нужно проверять. Иначе через некоторое время придется поверить в нечистую силу и тому подобное.

Если видно в отладчике System.Object — это неоспоримый факт. А раз так, то нужно искать причины этого факта. Я тебе сразу сказал, что причины эти кроются в типе (его описании или подключении). Ты мне не верил и упорно добивался каких-то потусторонних знаний.

VD>>Вообще, не ясно зачем было использовать типы из макро-сборки.

_C_>чтобы не создавать отдельный проект для столь незначительного момента.

Говоря по русски — от лени. Я сам ленив до невозможности, но искать часами (а в твоем случае днями) ошибки — это же в сто раз более лениво. Не находишь?
По сему нужно строить работу так, чтобы подобного рода ошибки не мешали движению вперед.

В твоем случае первое в чем нужно было убедиться — видно ли тип в конечном проекте.

Кроме того в твоих проектах бардак. Там туча ворнингов которые скрывают реальные ошибки.

Двигаться надо короткими перебежками. Сделал изменение, проверь его корректность. И только потом двигайся дальше. Иначе быстро придешь к состоянию когда происходящее вокруг будет казаться мистикой.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[25]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 18.12.11 22:51
Оценка:
VD>Вообще, не ясно зачем было использовать типы из макро-сборки.

>>чтобы не создавать отдельный проект для столь незначительного момента.


не верно написал, мне нужны типы в коде из макросборки. В частности, сохраняемые
объекты у меня наследуют интерфейс IPersist, который описан в макросборке и для него там генерится код реализации.
также там я держу тип базы и всякое по мелочи.

попробовал убрать -m: и вообще перестало работать.
Re[27]: доступ к классам и структурам в Reference из макроса
От: _Claus_  
Дата: 18.12.11 22:57
Оценка:
VD>Кроме того в твоих проектах бардак. Там туча ворнингов которые скрывают реальные ошибки.
это набросок, а не релизный продукт. во вторых я начинающий в N.

VD>Двигаться надо короткими перебежками. Сделал изменение, проверь его корректность.

только так и делаю. вот нактнулся на это, и разбираюсь до победного(пока не пойму)
Re[26]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.12.11 23:51
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>не верно написал, мне нужны типы в коде из макросборки. В частности, сохраняемые

_C_>объекты у меня наследуют интерфейс IPersist, который описан в макросборке и для него там генерится код реализации.
_C_>также там я держу тип базы и всякое по мелочи.

Дык и вынеси нужные типы в отдельную сборку (библиотеку). Зачем в ратайме нужна сборка с проектами?

_C_>попробовал убрать -m: и вообще перестало работать.


Еще бы.

Попробуй m на r заменить.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[28]: доступ к классам и структурам в Reference из макроса
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.12.11 14:17
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>это набросок, а не релизный продукт. во вторых я начинающий в N.


Так не бывает. Если ест грязь, то качества нет. А раз так, то ты вечно будешь ловить баги.

В набросках, ты можешь забить дизайн, архитектуру и другие красивые слова. Но качество кода страдать не должно.

Я тебе ведь говорил, что если ты получил object — это значит, что тип не был связан. А об этом выводится сообщение. Если бы у тебя не было тонны ворнингов, то ты бы увидел их в консоли, которая открывается у тебя при отладке. Но ты ничего не заметил, как это было дцатое сообщение в консоли.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.