Using a project that targets .Net 4.5, I have a section of code that does this
public static IObservable<string> Receive(SubscriberSocket subp)
{
return Observable
.Create<string>(o =>
Observable.Using<string, SubscriberSocket>(() =>
{
subp.Connect("inproc://test");
subp.Subscribe("");
return subp;
}, sub =>
Observable.FromEventPattern<EventHandler<NetMQSocketEventArgs>, NetMQSocketEventArgs>(
h => sub.ReceiveReady += h,
h => sub.ReceiveReady -= h)
.Select(x => sub.ReceiveString()))
.Subscribe(o));
}
However, it complains that I need System.Reactive.Interfaces, Version=3.0.0.0
even though that assembly has been added into the project?
/home/idf/Documents/csharp/NetMQObs/TestNetMQ/TestNetMQ/Program.cs(25,25): Error CS0012: The type 'IQbservable<>' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Reactive.Interfaces, Version=3.0.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263'. (CS0012) (TestNetMQ)
After adding the 2.2.5 versions as suggested below, now I get this error. Changing the call to ReceiveFrameString
compiles, but YMMV.
/home/idf/Documents/csharp/NetMQObs/TestNetMQ/TestNetMQ/Program.cs(42,42): Error CS1061: 'SubscriberSocket' does not contain a definition for 'ReceiveString' and no extension method 'ReceiveString' accepting a first argument of type 'SubscriberSocket' could be found (are you missing a using directive or an assembly reference?) (CS1061) (TestNetMQ)