Подчистил код в Operators/OperatorsFactory — привёл свойства в соответствие с вариантом AndrewVK + переименовал методы, чего-то меня переклинило и я забыл, что в factory-классах методы наываются без префикса Get/Create (как пример — см на System.Linq.Expressions.Expression).
Попутно привёл в порядок шаблоны T4 для операторов / ассертов.
В большинстве случаев в заголовке tt-файла достаточно
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ include file="$(SolutionDir)T4.Reusable\Autogenerated.ttinclude" #>
<#@ include file="..." #>
Строка 1 — этой строки не должно быть в ttinclude-файлах. Иначе рано или поздно упрёмся в конфликт между двумя include-шаблонами.
Строка 2 — заголовок с комментарием "не трогай, хуже будет". В идеале надо инклюдить в каждый tt-файл, если возражений не будет — сделаю.
Строка 3 — остальные инклюды.
остальное — по необходимости, те же юзинги, если не нужны, можно не добавлять.
Собственно к чему это я: эти мелочи кому-то интересны, или не замусоривать раздел такими темами?
Здравствуйте, Sinix, Вы писали:
S>Собственно к чему это я: эти мелочи кому-то интересны, или не замусоривать раздел такими темами?
Мне интересно. Если не лень — пиши.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Мне интересно. Если не лень — пиши.
Не лень, скорее привычка. Этот уже наполовину написал, затем сообразил что не в рабочий проект пишу)))
Ну ок, значит буду.
Ещё вопрос: на неделе выкрою время и посмотрю код на предмет мест в API, которые вызывают вопросы. Ну, чтоб не править после релиза
Собственно вопрос: как это дело удобней оформить? Просто списком сюда, код не править или сделать ветку, там поправить и оформить пуллреквестом?
99% за то, что спорных место будет мало. Например, в основном namespace сходу заметил только одно, AnonymousDisposable.Dispose() должен выглядеть как-то так:
/// <summary>
/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
/// </summary>
public void Dispose()
{
var disposeAction = Interlocked.Exchange(ref _disposeAction, null);
if (disposeAction != null)
{
try
{
disposeAction.Invoke();
}
catch (Exception)
{
Interlocked.Exchange(ref _disposeAction, disposeAction);
throw;
}
}
}
Здравствуйте, Sinix, Вы писали:
S>Собственно вопрос: как это дело удобней оформить? Просто списком сюда, код не править или сделать ветку, там поправить и оформить пуллреквестом?
Не могу ответить на этот вопрос не зная конкретики.
S>99% за то, что спорных место будет мало. Например, в основном namespace сходу заметил только одно, AnonymousDisposable.Dispose() должен выглядеть как-то так:
Это ж не API изменение, а реализации — поддержка многопоточности. Такое можно сразу в master.
S>S> /// <summary>
S> /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
S> /// </summary>
S> public void Dispose()
S> {
S> var disposeAction = Interlocked.Exchange(ref _disposeAction, null);
S> if (disposeAction != null)
S> {
S> try
S> {
S> disposeAction.Invoke();
S> }
S> catch (Exception)
S> {
S> Interlocked.Exchange(ref _disposeAction, disposeAction);
S> throw;
S> }
S> }
S> }
S>
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>