首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >访问单例属性(WPF绑定)

访问单例属性(WPF绑定)
EN

Stack Overflow用户
提问于 2013-05-27 23:42:11
回答 1查看 613关注 0票数 1

在c#中开发用户库时,我遇到了一个令人困惑的问题,在这个库中,我创建了两个类,它们实现了一个接口,这个接口由API作为一个单独的插件调用.

(这意味着在编译之后,API会检测到两个插件,尽管它们来自同一个项目)

我想做的是让这两个插件之间的通信成为可能。准确地说,我想把一个对象(它是引用而不是副本)从一个插件转移到另一个.但我失败了!

我试着制作其中一个插件Singleton并从另一个插件中访问它,但是由于API需要一个公共构造函数,所以我不得不模仿单个插件的工作,实际上我已经到达了插件的实例,但是我能够访问它的属性……

让我通过简化的代码来说明这一点:

假设这是A类(模仿单身人士的)

代码语言:javascript
运行
复制
Class A:IPlugin
{
    private static volatile A _instance;
    public static A Instance 
    { 
        get { return _instance; } 
    }
    public A()
    {
        if (_instance == null) _instance = this; // as i'm sure it's called once
    }

    public Foo F{get;set} // THIS IS INITIALIZED SOMEWHERE IN THAT PLUGIN'S CONTEXT
}

这是试图从A中提取对象的类

代码语言:javascript
运行
复制
Class B:IPlugin
{
     FindFoo()
     {
          Foo Fb = A.Instance.F; // THAT IS ALWAYS NULL
     }
}

--一个非常重要的指示,可能造成问题的是:

A.F绑定到WPF控件.

我希望我已经清楚地传达了我的问题,你将能够帮助我,因为我被困住了!

EN

回答 1

Stack Overflow用户

发布于 2013-05-28 01:07:49

试一试以下几点;

代码语言:javascript
运行
复制
public interface IPlugin {
   string Foo { get; set;}
}

public class A : IPlugin {

   private static A _inslance { get; set;}

    public static A Instance {
        get {
            if (_inslance == null){
                _inslance = new A();
            }
            return _inslance;
        }
   }


   public string Foo { get; set;}
}

public class B : IPlugin {

   public string GetMeFooOfA {
        get {
            return A.Instance.Foo;
        }
   }

   public string Foo { get; set;}
}

void Main()
{
    A.Instance.Foo = "Test 123";

    var b = new B();

    Console.WriteLine(b.GetMeFooOfA);
}

您可能需要查看DI (依赖项注入),例如Unity、Unity等。框架,它将为您在开发模块化代码时提供一个很好的工作平台。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16781893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档