Наш репозиторий похож:
/trunk
/branches
/sandbox
/vendor
/ccnet
соединительная линия / является Вашей стандартной, новейшей разработкой. Мы используем CI, таким образом, это должно всегда создавать и проходить тесты.
ответвления / это - то, куда мы помещаем 'санкционированные' большие изменения, т.е. что-то, что мы ЗНАЕМ, превратит его в соединительную линию, но, возможно, нуждается в некоторой работе и повредил бы CI. Также, где мы работаем над корректировочными версиями, которые имеют их собственные проекты CI.
песочница / у каждого разработчика есть их собственная песочница плюс общая песочница. Это для вещей как, "Позволяет, добавляет поставщик LINQ к нашему продукту" тип задач, которые Вы делаете, когда Вы не делаете своей реальной работы. Это может в конечном счете войти в соединительную линию, это не может, но это там и при управлении версиями. Никакой CI здесь.
/ поставщик стандартное ответвление поставщика для проектов, где мы компилируем, но это не код, который мы поддерживаем.
/ccnet это - наши теги CI, только сервер CI может записать в здесь. Непредусмотрительность сказала бы нам переименовывать это к чему-то более универсальному, такому как CI, СБОРКИ, и т.д.
Вы переопределяете метаданные DefaultStyleKey в своем статическом конструкторе:
static MyControl()
{
DefaultStyleKeyProperty.OverrideMetadata(
typeof(MyControl),
new FrameworkPropertyMetadata(typeof(MyControl)));
}
Затем в своих ресурсах вы можете основывать его стиль на кнопке:
<Style TargetType="{x:Type lcl:MyControl}" BasedOn="{StaticResource {x:Type Button}}" />
В прошлом я пытался переопределить метаданные DefaultStyleKey, указывающие на базовый класс (Button в вашем случае), но, похоже, это не работает.
Свойство TargetType не работает для классов, производных от указанного типа. См. этот вопрос
I second Aleksanders и предложение Стефанса, но не будет подклассом SoapClient. Вместо этого я бы обернул обычный SoapClient в декоратор, потому что ведение журнала не является прямой проблемой SoapClient. Кроме того, слабая связь позволяет вам легко заменить SoapClient на макет в ваших модульных тестах, так что вы можете сосредоточиться на тестировании функциональности ведения журнала. Если вы хотите регистрировать только определенные вызовы, вы можете добавить некоторую логику, которая фильтрует запросы и ответы по $ action или тому, что вы сочтете нужным.
Изменить , поскольку Стефан предложил добавить некоторый код, декоратор, вероятно, будет выглядеть примерно так этот, и удалите атрибут x: key из стиля, если он есть