При вычислениях данных между теми записями может быть лучше передать их потоком, поскольку они доступны. Кроме того, запись их внезапно может произвести переполнение буфера (хотя это, вероятно, редко, это действительно происходит), означая, что Ваше приложение должно приостановить и повторить записи (не все они, только от точки, где Вы поражаете переполнение.)
я обычно не старался бы изо всех сил разделять записи на блоки, особенно не всего 256-байтовые блоки. (Так как примерно 1 500 байтов могут поместиться в пакет Ethernet после TCP/IP наверху, я использовал бы блоки, по крайней мере, настолько большие.)
Одно решение, которое может работать для вместо этого вы должны создать интерфейс и поместить свою реализацию в методы расширения.
звучит для меня как хорошее время для использования шаблона декоратора, вот некоторые ресурсы:
http://andrewtroelsen.blogspot.com/2009/04/decorator-pattern-extension-methods.html
Я использовал заглушки, которые вызываются из производного класса и принимают класс базового типа в качестве аргумента. Это оставляет мне несколько однострочных функций. Жаль.
Я не могу напрямую обращаться к свойству зависимости ситуации, поэтому я расскажу об общей проблеме, если это поможет.
В C # нельзя выполнять множественное наследование реализации. Однако вы можете присоединить интерфейс.
Итак, вы можете определить интерфейс:
interface IWhatever
{
...
}
А затем вы можете реализовать функции этого интерфейса в классе следующим образом:
class M : IWhatever
{
}
И теперь вы берете классы, которые вы хотели бы иметь эту дополнительную функциональность:
class B : MustExtend, IWhatever
{
private M myMImpl = new M();
// implement functions, call to 'myMImpl' for implementation.
}
Это называется «композиция».
Проблема с методами расширения и интерфейсами заключается в том, что для свойств зависимостей требуется объявление статических членов и общедоступных свойств, например:
public PermissionEnum Permission
{
get { return (PermissionEnum)GetValue(PermissionProperty); }
set { SetValue(PermissionProperty, value); }
}
public static readonly DependencyProperty PermissionProperty =
DependencyProperty.Register("Permission", typeof(PermissionEnum), typeof(SecurityMenuItem), new FrameworkPropertyMetadata(PermissionEnum.DeliveryView));