Здравствуйте, Serginio1, Вы писали:
S>·>Твой код может обращаться к стороннему, к каким-нибудь утилитным функциям. S> Вот эти вызовы мне и надо подменить через InterceptsLocation и вернуть нужные мне данные изменить состояние моих объектов!
Т.е. тебе придётся эмулировать эти все сторонние утилитные функции.
S>>> Вот InterceptsLocation как раз для этого прекрасно подходят! S>·>Только в весьма ограниченных случаях. S> Везде!
Возможно, если эту фичу допилят чтобы она более менее вменяемо работала, то может быть. Но сейчас ограничений туча.
А на сегодняшний день, оно не может конструкторы и даже проперти перехватывать!
S>·>На заборе тоже написано. S> Аргуиент!
Я аргументов кучу привёл, ты их просто проигнорировал. У тебя пока один аргумент — "так на хабре написано о новостях будущего". Время рассудит, поставь себе закладку, если такая mock-либа выйдет, попробуй и отпишись о результатах. Уверен, что в течение пяти лет этого не случится. А дальше либо ишак сдохнет, либо падишах.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
S>>·>Твой код может обращаться к стороннему, к каким-нибудь утилитным функциям. S>> Вот эти вызовы мне и надо подменить через InterceptsLocation и вернуть нужные мне данные изменить состояние моих объектов! ·>Т.е. тебе придётся эмулировать эти все сторонние утилитные функции.
Не все. Только там где мне нужен резултьтат. И не всех, а только лимитирующие процесс. Таких немного. S>>>> Вот InterceptsLocation как раз для этого прекрасно подходят! S>>·>Только в весьма ограниченных случаях. S>> Везде! ·>Возможно, если эту фичу допилят чтобы она более менее вменяемо работала, то может быть. Но сейчас ограничений туча. ·>А на сегодняшний день, оно не может конструкторы и даже проперти перехватывать!
Использование в SG это уже твои проблемы. Суть есть возможность поменить вызов. S>>·>На заборе тоже написано. S>> Аргуиент! ·>Я аргументов кучу привёл, ты их просто проигнорировал. У тебя пока один аргумент — "так на хабре написано о новостях будущего". Время рассудит, поставь себе закладку, если такая mock-либа выйдет, попробуй и отпишись о результатах. Уверен, что в течение пяти лет этого не случится. А дальше либо ишак сдохнет, либо падишах.
Ну еще раз это инструмент, а обертку пиши сам. Там не сложно.
Суть можешь написать свой генератор, а логику замены в отдельном файле и класс расширения для замены
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, ·, Вы писали:
·>Уверен, что в течение пяти лет этого не случится. А дальше либо ишак сдохнет, либо падишах.
Прикольно. Как раз вот этот спор о Low Latency C#
Здравствуйте, Serginio1, Вы писали:
S>·>Т.е. тебе придётся эмулировать эти все сторонние утилитные функции. S> Не все. Только там где мне нужен резултьтат. И не всех, а только лимитирующие процесс. Таких немного.
Ещё раз. Подменять что-то в своём коде — проблемы нет, и никогда не было. Проблема делать подмену в чужом коде.
S>·>А на сегодняшний день, оно не может конструкторы и даже проперти перехватывать! S> Использование в SG это уже твои проблемы. Суть есть возможность поменить вызов.
Так нет возможности подменять вызов проперти или конструктора.
S>·>Я аргументов кучу привёл, ты их просто проигнорировал. У тебя пока один аргумент — "так на хабре написано о новостях будущего". Время рассудит, поставь себе закладку, если такая mock-либа выйдет, попробуй и отпишись о результатах. Уверен, что в течение пяти лет этого не случится. А дальше либо ишак сдохнет, либо падишах. S> Ну еще раз это инструмент, а обертку пиши сам. Там не сложно.
Я понимаю. Ты не понимаешь, что этот инструмент не подходит для мокирования. Ну невозможно закручивать гвозди отвёрткой, как ни старайся.
S> Суть можешь написать свой генератор, а логику замены в отдельном файле и класс расширения для замены
Круто, конечно, но ни для моков, ни для AOP оно не подходит.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
·>Здравствуйте, Serginio1, Вы писали:
S>>·>Т.е. тебе придётся эмулировать эти все сторонние утилитные функции. S>> Не все. Только там где мне нужен резултьтат. И не всех, а только лимитирующие процесс. Таких немного. ·>Ещё раз. Подменять что-то в своём коде — проблемы нет, и никогда не было. Проблема делать подмену в чужом коде.
Есть подмена вызова сторонних библиотек! S>>·>А на сегодняшний день, оно не может конструкторы и даже проперти перехватывать!
Да пока сделано на расширениях. Но проперти это тот же get_method. Возможно и можно подменить.
Там же главное с какой строки. Наверняка и конструктор тоже. Но надо смотреть.
S>> Использование в SG это уже твои проблемы. Суть есть возможность поменить вызов. ·>Так нет возможности подменять вызов проперти или конструктора.
Еще раз ты пробовал?
S>>·>Я аргументов кучу привёл, ты их просто проигнорировал. У тебя пока один аргумент — "так на хабре написано о новостях будущего". Время рассудит, поставь себе закладку, если такая mock-либа выйдет, попробуй и отпишись о результатах. Уверен, что в течение пяти лет этого не случится. А дальше либо ишак сдохнет, либо падишах. S>> Ну еще раз это инструмент, а обертку пиши сам. Там не сложно. ·>Я понимаю. Ты не понимаешь, что этот инструмент не подходит для мокирования. Ну невозможно закручивать гвозди отвёрткой, как ни старайся.
S>> Суть можешь написать свой генератор, а логику замены в отдельном файле и класс расширения для замены ·>Круто, конечно, но ни для моков, ни для AOP оно не подходит.
На самом деле я часто использую условную компиляция для тестов. И у меня все прекрасно подходит!
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>·>Ещё раз. Подменять что-то в своём коде — проблемы нет, и никогда не было. Проблема делать подмену в чужом коде. S>Есть подмена вызова сторонних библиотек!
ты не читаешь что тебе пишут.
S>>>·>А на сегодняшний день, оно не может конструкторы и даже проперти перехватывать! S> Да пока сделано на расширениях. Но проперти это тот же get_method. Возможно и можно подменить. S> Там же главное с какой строки. Наверняка и конструктор тоже. Но надо смотреть.
Нет, достаточно прочитать что тебе пишут:
Interception can only occur for calls to ordinary member methods — not constructors, delegates, properties, local functions, operators, etc.
S>>> Использование в SG это уже твои проблемы. Суть есть возможность поменить вызов. S>·>Так нет возможности подменять вызов проперти или конструктора. S> Еще раз ты пробовал?
Я читал. А ты похоже не читаешь даже то, что сам пишешь.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
·>Я знаю. Я об этом и сказал: ·>
·>Возможно, если эту фичу допилят чтобы она более менее вменяемо работала, то может быть. Но сейчас ограничений туча.
·>
·>Уверен, что в течение пяти лет этого не случится. А дальше либо ишак сдохнет, либо падишах.
·>Возможно, что я ошибусь, но по многим признакам того что есть сейчас — оно не взлетит.
То же самое говорили о yield, Linq, Source Generator. Однако все работает и активно используется, а SG развивается в разные стороны.
Так или иначе существует потребность в подмене существующего кода своим в своем коде.
Очевидный пример кроме моков, это использование одного и того же кода на разных платформах. В большинстве своем код един, но есть нюансы.
И вот эти нюансы можно генерить для каждой платформы подменой кода.
Сейчас это делается через условную компиляцию или явно через информацию о платформе.
и солнце б утром не вставало, когда бы не было меня
Вопрос такой. а в первичных конструкторах нельзя чтобы параметры автоматом отображались на филды?
может хотя бы SG есть. хотя это конечно уже не совсем то.
Здравствуйте, Разраб, Вы писали:
Р>Вопрос такой. а в первичных конструкторах нельзя чтобы параметры автоматом отображались на филды? Р>может хотя бы SG есть. хотя это конечно уже не совсем то.
Ну есть же меню для класса создать конструктор. Там как раз можно выбрать филды которые будут инициализироваться по параметрам. Помоему это проще чем городить
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, IT, Вы писали:
IT>·>Круто, конечно, но ни для моков, ни для AOP оно не подходит. IT>Про моки не скажу, никогда этой хренью не пользовался. А для АОП работает шо железная железяка.
Ты используешь preview-фичи и они железно работают?!
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
IT>>Про моки не скажу, никогда этой хренью не пользовался. А для АОП работает шо железная железяка. ·>Ты используешь preview-фичи и они железно работают?!
Исследую. Вообще-то этой фиче всего неделя. Но исследования показывают, что фича для АОП абсолютно работоспособна.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, ·, Вы писали:
S>> Суть можешь написать свой генератор, а логику замены в отдельном файле и класс расширения для замены ·>Круто, конечно, но ни для моков, ни для AOP оно не подходит.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, ·, Вы писали:
IT>>>Про моки не скажу, никогда этой хренью не пользовался. А для АОП работает шо железная железяка. IT>·>Ты используешь preview-фичи и они железно работают?!
IT>Исследую. Вообще-то этой фиче всего неделя. Но исследования показывают, что фича для АОП абсолютно работоспособна.
Здравствуйте, IT, Вы писали:
IT>·>Ты используешь preview-фичи и они железно работают?! IT>Исследую. Вообще-то этой фиче всего неделя. Но исследования показывают, что фича для АОП абсолютно работоспособна. Разработчики AOP-framework говорят, что эта фича для них не подходит. Не знаю кому верить.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, Serginio1, Вы писали:
S>>> Суть можешь написать свой генератор, а логику замены в отдельном файле и класс расширения для замены S>·>Круто, конечно, но ни для моков, ни для AOP оно не подходит. S>Знакомство с АОП S>Там и явовские @Aspect и используется в PostSharp
Причём тут InterceptsLocation?!
S> И они тоже заинтересованы в https://github.com/dotnet/csharplang/issues/7009?WT.mc_id=dotnet-35129-website&ysclid=lp6tob5u2o953641620#issuecomment-1479711571
Ты, видимо, английский плохо понимаешь, но тут они прямым текстом говорят, что это для AOP не подходит и предлагают помочь provide a more elegant and robust solution.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай