На самом деле, 9/10 кода генерируется с помощью тулзы PipelineBuilder, которая к тому же умеет встраиваться в VS как аддин. Достаточно создать только одну сборку, содержащую контракты. Потом сбилдить её и натравить на получившийся dll-файл PipelineBuilder, после чего мы получим 4 готовые сборки, содержащие представления и адаптеры для обеих сторон взаимодействия.
Спасибо. Как раз некоторое время назад начал изучать System.Addin. Единственное что не нравится — это необходимость жёстко задавать структуру директорий. Я так понимаю, что проблема в том, что в классе-хелпере AddInStore нет возможности изменять названия директорий. Интересно было бы увидеть пример загрузки аддинов без использования AddInStore, если это вообще возможно.
Наткнулся случайно на старый пост и не смог оставить без ответа =)
Все статические поля класса инициализируются в статическом конструкторе, который вызывается только когда идёт первое обращение к классу.
То же относится и к P/Invoke библиотекам. Если окажется, что файла библиотеки не существует, то эксепшен будет выкинут только в момент JIT-компиляции вызывающего метода, а не при загрузке приложения.
А я являюсь «счастливым» обладателем Asus WL-700gE. Давно мечтаю нормально его настроить, но видимо не судьба, т.к. он имеет на борту 2 Мб флеш-памяти, в то время как все нормальные прошивки, в т.ч. знаменитая прошивка «от Олега» весят больше. Кажется, единственный вариант — перепаять память, но я совершенно в этом не разбираюсь. Может быть кто-то уже сталкивался с этой проблемой?
The JIT uses a number of heuristics to decide whether a method should be in-lined. The following is a list of the more significant of those (note that this is not exhaustive):
* Methods that are greater than 32 bytes of IL will not be inlined.
* Virtual functions are not inlined.
* Methods that have complex flow control will not be in-lined. Complex flow control is any flow control other than if/then/else; in this case, switch or while.
* Methods that contain exception-handling blocks are not inlined, though methods that throw exceptions are still candidates for inlining.
* If any of the method's formal arguments are structs, the method will not be inlined.
public static bool IsDigit(char c)
{
if (!IsLatin1( c ))
return (CharUnicodeInfo.GetUnicodeCategory( c ) == UnicodeCategory.DecimalDigitNumber);
return c >= '0' && c <= '9';
}
Так понятнее.
GetUnicodeCategory не выполнится если это не юникодовый символ, а проверка на юникодовость — функция IsLatin1 тоже будет инлайниться, т.к. у неё код ещё проще: «return (ch <= '\x00ff');»
1) ||
2) Если присмотреться, можно увидеть, что метод IsDigit делает для ASCII-символов почти то же, что и у вас. А учитывая, что CLR умеет инлайнить простые методы при JIT-компиляции, выигрыш от вашего подхода будет несущественным.
Интересно, а вы учли, что до кризиса 1500 долларов было равно ~40 тыс. рублей, а сейчас больше 50 тыс.?
Все статические поля класса инициализируются в статическом конструкторе, который вызывается только когда идёт первое обращение к классу.
То же относится и к P/Invoke библиотекам. Если окажется, что файла библиотеки не существует, то эксепшен будет выкинут только в момент JIT-компиляции вызывающего метода, а не при загрузке приложения.
The JIT uses a number of heuristics to decide whether a method should be in-lined. The following is a list of the more significant of those (note that this is not exhaustive):
* Methods that are greater than 32 bytes of IL will not be inlined.
* Virtual functions are not inlined.
* Methods that have complex flow control will not be in-lined. Complex flow control is any flow control other than if/then/else; in this case, switch or while.
* Methods that contain exception-handling blocks are not inlined, though methods that throw exceptions are still candidates for inlining.
* If any of the method's formal arguments are structs, the method will not be inlined.
www.ademiller.com/blogs/tech/2008/08/c-inline-methods-and-optimization/
{
if (!IsLatin1( c ))
return (CharUnicodeInfo.GetUnicodeCategory( c ) == UnicodeCategory.DecimalDigitNumber);
return c >= '0' && c <= '9';
}
* This source code was highlighted with Source Code Highlighter.
Так понятнее.
GetUnicodeCategory не выполнится если это не юникодовый символ, а проверка на юникодовость — функция IsLatin1 тоже будет инлайниться, т.к. у неё код ещё проще: «return (ch <= '\x00ff');»
В общем, не суть важно…
2) Если присмотреться, можно увидеть, что метод IsDigit делает для ASCII-символов почти то же, что и у вас. А учитывая, что CLR умеет инлайнить простые методы при JIT-компиляции, выигрыш от вашего подхода будет несущественным.