Salakhetdinov Shamil
mcp2004 at mail.ru
Wed Oct 9 16:28:31 CDT 2013
Hi Dan -- Solution sent back offline, one of "myriads" of possible solutions - it all depends on one coding style/taste. I must note VB.NET is a RPITA. (And I have been programming on VBA/VB6 for 10+ years, fulltime - 1994 - 2004+) Forget it - switch to C#! Thank you. -- Shamil Wednesday, October 9, 2013 10:02 AM -05:00 from "Dan Waters" <df.waters at comcast.net>: >Hi Shamil - I sent the app off-line. > >Good Luck! >Dan > >-----Original Message----- >From: dba-vb-bounces at databaseadvisors.com [mailto:dba-vb-bounces at databaseadvisors.com] On Behalf Of Salakhetdinov Shamil >Sent: Wednesday, October 09, 2013 1:45 AM >To: Discussion concerning Visual Basic and related programming issues. >Subject: Re: [dba-VB] Using Interfaces > > Hello Dan -- > >Yes, it should work. You can send me your sample project off-line to fix. But I use VS2012. Anyway the issue should have similar solution for VS2010 and VS2012. > >So you have a project B, which referencing project A > >B -> A > >but some functionality to call from 'Project A' code is located in 'Project B', and you can't set a reference from 'Project A' to 'Project B' > >A -> B > >because in this case you'll get a circular reference > >B <-> A > >and VS2010 etc. do not support circular references. > >And you do not want to move code from 'Project B' into a new 'Project C' as that moving would require a lot of work. > >So you define an interface in 'Project A', let's call it > >IMyCallBackToProjectB > >with a method CallMe > >then you create a facade class in 'Project B' implementing IMyCallBackToProjectB interface's method CallMe handling instance(s) of 'Project B' classes to be called from 'Project A' code, or just implement that interface in your 'Project B' class, which instance methods/functionality should be called from 'Project A'. And you'll have to add instance reference to IMyCallBackToProjectB interface to all your calls to 'Project A' methods, which need calling back 'Project B' functionality. Or you can just have a global variable ( coding purists keep silent please!) in 'Project A' keeping reference to 'Project B' instance implementing IMyCallBackToProjectB interface. That instance reference can be created on program start-up. Don't forget to set it to null and program exiting, otherwise you'll have a chance to get your program left hanging in memory in 'ghost mode' on exiting. > >I hope I haven't made the subject even more obscure than it was presented/discussed here before I have posted these my remarks. > >Thank you. > >- Shamil > > >Tuesday, October 8, 2013 3:24 PM -05:00 from "Dan Waters" < df.waters at comcast.net >: >>Hello! >> >> >> >>I've been struggling with using an interface to be able to call a >>referencing project from a referenced project. In Access you just use >>the Application.run("[ProcedureName]",arg1, arg2 .) statement. But in >>VB or C# there's not a direct equivalent. >> >> >> >>This can be done - and using an interface is the way to go. But I've >>been trying to make this work for 4 days now and I need to reach out to >>a more knowledgeable person than me. >> >> >> >>The simplest explanation is at: >> http://stackoverflow.com/questions/3765177/solve-circular-references-wi >>thout -introducing-a-new-project. The 2nd entry has what appears to be >>a simple explanation of what to do. I can make the interface, and the >>procedure which implements it, but the other 2 parts I can't make work. >> >> >> >>If you'd like to try this let me know. I've put together a small VB >>app (VS >>2010) which has all the pieces which I can email as an attachment. >> >> >> >>Thanks! >> >>Dan >> >. -- Салахетдинов Шамиль