• 0

C# Class library cross reference not allowed?


Question

Hey guys I want to build a DLL that can access all my forms properties and have the forms able to access the dll functions. Microsoft seemed to make

it impossible to do this. Any ideas? I can't add a reference of each other in both projects b/c of some error about how it's create circular speculation...that's what I want...both projects to be able to access both data.

5 answers to this question

Recommended Posts

  • 0

Circular referencing projects can be difficult because of the semenatics behind trying to compile them (which one would you compile first?), and load them. If the libraries will both be dependant on each other, would it not be easier to just compile them into the same project?

One way to get round them is to use an Event based mechanism, but it wouldn't be very pretty:

Project A declares Event 1

Project B creates a handler for Event 1

Project A fires Event 1

Project B catches Event 1

Only Project B is dependant on Project A

Create a custom event handler in Project A, which Project B implements but Project A fires. Make sense?

  • 0

eh...not really. B/c how would I get project b to create a handle out of anything from project a if I can't include both?

I would love to put them in the same project but VS 2005 doesn't allow you to add a .dll file project into an existing Windows Form project.

Is there a link maybe to explain more of what you're talking about?

  • 0

Visual Studio 2005 allows both kinds of projects to be in the same solution. The way antaris described it the 2 projects won't need to include each other. Only Project B would need to include Project A.

  • 0

Honestly, this doesn't sound like a good design. You can work around this, though.

My first thought, and I didn't get much sleep so forgive if I'm not clear, is to create a base class or interface that your forms implement inside another DLL. This base should include all the properties you want to expose to the primary DLL. Have your primary DLL reference this abstract type instead of the concrete type. Your Win form project should reference this, too, of course. Now your primary dll can be reference by your Win form app and your win form app can pass in the base type to your primary dll. You've created a triangular reference instead of a circular one. ;)

You should really rethink your design, though. If that much data and functionality really needs to be shared between 2 classes, it should be one class or a hierarchy.

  • 0

Ah, the Seperate Interface pattern, never thought of that.

  Quote
You should really rethink your design, though. If that much data and functionality really needs to be shared between 2 classes, it should be one class or a hierarchy
Yeah, thats what I meant when I said
  Quote
If the libraries will both be dependant on each other, would it not be easier to just compile them into the same project?

Also,

  Quote
I would love to put them in the same project but VS 2005 doesn't allow you to add a .dll file project into an existing Windows Form project

When you click File..Open or File..New, the dialog gives you the option of either creating a new solution, OR, adding the project to the existing solution.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • The new official logo of the GOP
    • Linux 6.16-rc1 is out: What's new and what does it mean for your system? by Paul Hill Linus Torvalds, head and founder of the Linux kernel, has announced the closure of the merge window where major new features are added to the kernel, and the beginning of the Linux 6.16 release candidates, beginning with release candidate 1 (Linux 6.16-rc1). Linux 6.15 was released two weeks ago and in the time since, developers have had the opportunity to try and get their new kernel features into the Linux 6.16 kernel. Over the next two months, we will get seven or eight release candidates where developers will stabilize new and existing features. This means that the stable version of Linux 6.16 will arrive around the end of July. Torvalds said that the merge window seemed pretty normal this time, but did say he had a feeling that there were more “late straggler” pull requests than is typical. Despite this, everything seems to be fine and the schedule will be going forward as planned. Key areas of development Torvalds explained that around half of the changes in the first release candidate were driver updates, with the bulk of those being made up with by GPU and networking drivers. For end users these are the most important changes because when your favorite distribution of Linux ships a new release with this kernel, it will support more graphics cards and networking equipment like Wi-Fi cards. The non-driver updates in this version are split between architecture-specific updates, documentation and tooling (perf tool and selftests), and core changes to filesystems, core kernel, memory management, and networking. Torvalds said the core changes include some of the “most important” changes, though they’re not necessarily major changes. Fixes to the core ensure a more stable Linux kernel for end users, plus better performance. The merge window saw developers submit thousands of non-merge commits and merges. The non-merge commits were around 13,000 while the merge commits nearly reached 1,000. There were 1,783 unique authors submitting code during this window. Next steps Over the coming weeks, Linux developers, including individuals or representatives of companies, will submit bug fixes for new and existing features. This release candidate cycle will run until around the end of July and then the final version will become available. End users shouldn’t go out and download Linux 6.16 when it’s released, instead just wait for your Linux distribution to update to it, as distribution-specific changes get made. Neowin will be following these releases and reporting on any interested changes that are noted. Source: LKML
    • There was no cancelation. Microsoft delayed work on it to focus on further tuning the OS and improving the OS experience overall, before going full core into a direct hardware battle with their partners.
    • As someone who has 500+ hours of playtime on Anno 1800, all I can say is shut up and take my money.
  • Recent Achievements

    • Week One Done
      Al_ earned a badge
      Week One Done
    • Week One Done
      MadMung0 earned a badge
      Week One Done
    • Reacting Well
      BlakeBringer earned a badge
      Reacting Well
    • Reacting Well
      Lazy_Placeholder earned a badge
      Reacting Well
    • Dedicated
      Epaminombas earned a badge
      Dedicated
  • Popular Contributors

    1. 1
      +primortal
      474
    2. 2
      +FloatingFatMan
      273
    3. 3
      ATLien_0
      242
    4. 4
      snowy owl
      210
    5. 5
      Edouard
      182
  • Tell a friend

    Love Neowin? Tell a friend!