• 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

    • Lol "media control center", these are just the GLOBAL MEDIA CONTROLS directly taken from Chromium without changing anything, why the hell doesn't Microsoft call them by their correct name?
    • vPro is the hardware that a number of software packages use. A lot of the first party management tools from Dell, HP, and Lenovo use vPro. Having said all that, it is kind of a nothing burger. Promised a lot, but doesn't really do much for most people.
    • How about an AI generated weekly wrap-up of all AI news. I skim over articles about which AI claims to have a bigger 'brains' this week (or even today), and it changes too often to even consider it worth remembering.
    • Or…because it makes it obvious what they are referring to. Imagine if Microsoft called it Visual Studio 22.
    • Ghost Downloader 3 v3.5.13 by Razvan Serea Ghost Downloader 3 is a high-performance download manager for Windows, featuring AI-enhanced acceleration, intelligent multi-threading, and smart file segmentation. It supports download resumption via .ghd files, global speed limits, and clipboard monitoring for quick link capture. The interface is built with Fluent Design, offering a modern and smooth user experience. Users benefit from advanced features like sparse file support, system tray integration, proxy configuration, secure SSL options, and automatic filename recognition. Ghost Downloader 3 is ideal for users seeking speed, efficiency, and customization. Core Download Features AI-Powered Acceleration: Experimental feature that dynamically increases thread count (up to 253) to maximize bandwidth usage. Intelligent Segmentation: Divides downloads into multiple parts for parallel processing, supporting breakpoint resume via .ghd files. Dynamic Thread Allocation: Automatically splits faster segments to create new threads, enhancing download speeds. Network & Proxy Support Global Speed Limiting: Allows setting a maximum download speed to manage bandwidth usage. Proxy Support: Compatible with SOCKS5, HTTP, and HTTPS proxies, including auto-detection features. SSL Certificate Verification: Optional SSL verification for secure downloads. System Proxy Detection: Automatically detects system proxy settings across Windows, Linux, and macOS. Windows-Specific Features Fluent Design UI: Modern interface with support for Mica, Acrylic, and Aero background effects. Toast Notifications: Supports Windows 10 (1709+) native notifications. Window Border Accent Colors: Enhanced visual integration with Windows 11. Application Features Smart Filename Recognition: Automatically identifies and decodes filenames from HTTP headers, URL parameters, or paths. Sparse File Support: Utilizes sparse file technology on supported file systems (e.g., NTFS) for efficient disk space allocation. Clipboard Monitoring: Optionally monitors clipboard for download links to facilitate quick task additions. Drag-and-Drop and Paste-to-Add: Supports intuitive methods for adding download tasks. Task Management: Features batch addition, per-task thread customization, pause/resume/cancel options, and hash verification (MD5, SHA1, SHA256). System Integration System Tray Support: Minimizes to system tray with background download capabilities. Automatic Startup and Task Resumption: Configurable to launch on system startup and resume unfinished downloads. Single Instance Enforcement: Prevents multiple instances from running simultaneously. Automatic Update Checks: Optionally checks for new versions on startup. Ghost Downloader 3 v3.5.13 changelog: Improved shared memory handling for macOS ARM by @cy920820 in #176 Fixed empty thread creation bug by @Alpha-Qian in #184 Optimized automatic speed boost feature by @Alpha-Qian in #183 Optimized download engine code by @XiaoYouChR Notes: Ghost Downloader may trigger a warning or show a hit on VirusTotal, but if only a few antivirus engines flag it, it’s likely a false positive. The app is open source, so you can inspect the code yourself for peace of mind. If you want to use Ghost-Downloader-3 on Windows 7, please download the version v3.5.8-Portable. Download: Ghost Downloader 64-bit | Portable 64-bit | ~50.0 MB (Open Source) Download: Ghost Downloader ARM64 | Portable ARM64 Links: Ghost Downloader Home Page | MacOS / Linux | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
  • Recent Achievements

    • Week One Done
      abortretryfail earned a badge
      Week One Done
    • First Post
      Mr bot earned a badge
      First Post
    • First Post
      Bkl211 earned a badge
      First Post
    • One Year In
      Mido gaber earned a badge
      One Year In
    • One Year In
      Vladimir Migunov earned a badge
      One Year In
  • Popular Contributors

    1. 1
      +primortal
      495
    2. 2
      +FloatingFatMan
      255
    3. 3
      snowy owl
      250
    4. 4
      ATLien_0
      228
    5. 5
      +Edouard
      191
  • Tell a friend

    Love Neowin? Tell a friend!