Question

I have few public properties in App.xaml.cs which is in project A and I want to refer them in my project B. However my project A has a reference to project B, so I cannot add again the reference of project A in project B otherwise it will result in cyclic error. So how can I refer those properties in my class library? I don't want to use reflection :).

As a workaround I have stored those properties in one class in project B (so it can be referred in project A as well as project B) and made those properties to be static and all works fine. However I am still curious to know what if I had stored them in App.xaml.cs? Any options available?

Thanks in advance :)

Was it helpful?

Solution

The App class should expose things that are only relevant to the application project. As soon as you realised that you wanted these things accessable in B.dll they became relevant to more than just the application project and therefore no longer belong in the application project.

Adding a class to B.dll that carries these things as static properties could be a reasonable approach. Another common pattern is to have a single Current static property.

public MyClass
{
    private static MyClass _current = new MyClass();
    public static MyClass Current { get { return _current; } }

    public string SomeInstanceValue { get; set; }
}

Both A and B would access things using the pattern var x = MyClass.Current.SomeInstanceValue. The advantage of this approach is that it allows the Current property getter to determine if a "current" instance is available or not.

You might also want to review the documentation on ApplicationLifeTimeObjects.

OTHER TIPS

When A and B both need something, maybe you should put them in a C project (C as in Common) and then refer to C from both A and B.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top