ILogSource это источник данных, например шлюз к терминалу или своя стратегия.
public QuikTrader trader;
MyStrategy myStrat;
...
monitor = new MonitorWindow();
monitor.Show();
logManager = new LogManager();
logManager.Listeners.Add(new GuiLogListener(monitor));
...
trader = new QuikTrader(Path.Text);
logManager.Sources.Add(trader);// добавили шлюз как источник данных
...
myStrat = new myStrategy();
logManager.Sources.Add(myStrat);// добавили стратегию как источник данных
class MyStrategy : Strategy
{
//
}
Если я правильно понял вопрос. То вы хотите чтобы допустим в окно с логами можно было добавлять произвольное сообщение.
Если так. То есть класс LoggingHelper и метод AddInfoLog.
чтобы допустим в окно с логами можно было добавлять произвольное сообщение.
Если так. То есть класс LoggingHelper и метод AddInfoLog.
А AddInfoLog требует в свою очередь LogReceiver, который как правильно делать вообще не понятно :(
А AddInfoLog требует в свою очередь LogReceiver, который как правильно делать вообще не понятно :(
Как работать с справкой.
Открываем справку с описанием AddInfoLog и видим
public static void AddInfoLog(
this ILogReceiver receiver,
string message,
params Object[] args
)
Если перейти по ссылке ILogReceiver, то попадем в описание, в котором написано что это интерфейс(также это видно из названия ILogReceiver ).
Из этого делается вывод, что в качестве параметра в AddInfoLog должен передаваться объект реализующий интерфейс ILogReceiver.
Далее посмотрим описание двух классов QuikTrader и Strategy
public class QuikTrader : BaseTrader
Ничего интересного, переходим по ссылке BaseTrader
public abstract class BaseTrader : Disposable, ITrader, IDisposable, ILogReceiver, ILogSource, IPersistable
BaseTrader реализует интерфейс ILogReceiver, а т.к. QuikTrader является его наследником то его можно использовать в качестве передаваемого параметра для AddInfoLog.
Аналогично и для Strategy
public class Strategy : Equatable<Strategy>, INotifyPropertyChanged, ILogReceiver, ILogSource, IPersistable
Пример:
_trader = new QuikTrader();
_myStrat = new MyStrategy();
....
LoggingHelper.AddInfoLog(_trader, "Comment");
LoggingHelper.AddInfoLog(_myStrat, "Comment");
class MyStrategy : Strategy
{
LoggingHelper.AddInfoLog(this, "Comment");
}
Или короче
_trader = new QuikTrader();
_myStrat = new MyStrategy();
....
_trader.AddInfoLog("Comment");
_myStrat.AddInfoLog("Comment");
class MyStrategy : Strategy
{
this.AddInfoLog("Comment");
}
Comments (14)
Login or Create account, Log in or register to leave a comment
если речь именно о логировании,то MonitorWindow
Ну MonitorWindow создается как отдельное окно, а хотелось бы в виде таблички как в вашем примере
Сейчас получилось что то вроде:
В xaml файле написал:
Ну файл естественно не компилится, ругается, но ошибки не выдает.
EcngTradingXaml:LogControl/ попробуйте это вставить.
Лучше просто Monitor.
Огромное спасибо всем за столь быстрые ответы:) с logcontrol получилось
А как создать ILogSource?
ILogSource это источник данных, например шлюз к терминалу или своя стратегия.
Это я в курсе, мне нужно чтобы в логгере просто появлялись сообщения допустим о сделках. Но при этом там стратегия не задействована
Если я правильно понял вопрос. То вы хотите чтобы допустим в окно с логами можно было добавлять произвольное сообщение. Если так. То есть класс LoggingHelper и метод AddInfoLog.
Спасибо!
Как работать с справкой.
Открываем справку с описанием AddInfoLog и видим
Если перейти по ссылке ILogReceiver, то попадем в описание, в котором написано что это интерфейс(также это видно из названия ILogReceiver ). Из этого делается вывод, что в качестве параметра в AddInfoLog должен передаваться объект реализующий интерфейс ILogReceiver.
Далее посмотрим описание двух классов QuikTrader и Strategy
Ничего интересного, переходим по ссылке BaseTrader
BaseTrader реализует интерфейс ILogReceiver, а т.к. QuikTrader является его наследником то его можно использовать в качестве передаваемого параметра для AddInfoLog.
Аналогично и для Strategy
Пример:
Или короче
Большое спасибо! Я бы сам не разобрался - у меня с ООП большие проблемы.