C# 在不同对象之间共享对象

C# 在不同对象之间共享对象,c#,sharing,C#,Sharing,我的情况是,我有一个公共引用对象,它作为参数传递给不同的操作对象。传递代码会使代码变得非常混乱。 是否有必要将其作为对每个操作(如会话)的引用?然而,它只是一个核心代码库。使用静态类不是解决方案 谢谢解决方案1-您可以使用单例。它们保证在运行的代码中只有一个类实例 解决方案2-为什么不将共享引用对象作为具有这些操作的对象的属性?这样,每个操作都可以访问它。您可以做一些奇特的事情,比如如果引用属性为null,抛出异常等等 环境上下文模式是否适合您 据我所知,有两种通用方法: a) 使用IoC和构造

我的情况是,我有一个公共引用对象,它作为参数传递给不同的操作对象。传递代码会使代码变得非常混乱。 是否有必要将其作为对每个操作(如会话)的引用?然而,它只是一个核心代码库。使用静态类不是解决方案


谢谢解决方案1-您可以使用单例。它们保证在运行的代码中只有一个类实例


解决方案2-为什么不将共享引用对象作为具有这些操作的对象的属性?这样,每个操作都可以访问它。您可以做一些奇特的事情,比如如果引用属性为null,抛出异常等等

环境上下文模式是否适合您

据我所知,有两种通用方法:

a) 使用IoC和构造函数依赖项传入共享对象。正如您所提到的,如果在很多地方使用该对象,这会污染界面,并且在很多情况下会增加很多混乱


b) 使用:创建可由需要对象实例的类访问的基于接口的单例。在单例中有一个setter,它允许您覆盖实例(例如,用于单元测试),因此仍然可以测试代码。

为什么静态类不是解决方案?它只是一个核心代码库?您应该提供有关用例的详细信息(示例)。您可以将其作为所有函数都可以访问的全局属性,或者你可以让你的代码不那么凌乱。如果你想要更好的东西,你应该发布一些你确切需要的示例代码。原因是这个库正在网络上使用,而且可能有多个用户在使用它。静态将有相同的副本之间的用户。我明白。国际奥委会和阿米班特都是单身。我的问题是,它是一个多用户使用的应用程序,而我存储的对象是基于用户的信息。singleton将在多个用户中给我相同的对象。我理解。国际奥委会和阿米班特都是单身。我的问题是,它是一个多用户使用的应用程序,而我存储的对象是基于用户的信息。singleton将在多个用户中给我相同的对象。我尝试了。这对我不起作用。我的情况是纯asp正在使用.net程序集。然后,该模式将面临静态线程情况,即数据在整个站点上泄漏。我不能使用threadstatic和callcontext,因为它在我的情况下不太起作用。