C# 通过所有派生类共享基类中的对象

C# 通过所有派生类共享基类中的对象,c#,singleton,C#,Singleton,我有一组由类表示的测试步骤。每个都有自己的数据和方法,所以是标准的东西。全部从XML配置读入 然而,一次测试的结果可能会在下一次测试中用作参数,我在尝试实现这一点的最佳方法时遇到了一些困难 我考虑过创建一个类,本质上是一个对象字典,因此每个存储值都能够与一个唯一的键相关联,并且在以后使用该键的任何地方,test都能够从字典中获取它并使用它(显然,错误/类型检查等需要非常好)。我真的不喜欢这样,但不确定是否有其他c#功能模式可以处理这个问题 有点像这样: <TestRunner xsi:ty

我有一组由类表示的测试步骤。每个都有自己的数据和方法,所以是标准的东西。全部从XML配置读入

然而,一次测试的结果可能会在下一次测试中用作参数,我在尝试实现这一点的最佳方法时遇到了一些困难

我考虑过创建一个类,本质上是一个对象字典,因此每个存储值都能够与一个唯一的键相关联,并且在以后使用该键的任何地方,test都能够从字典中获取它并使用它(显然,错误/类型检查等需要非常好)。我真的不喜欢这样,但不确定是否有其他c#功能模式可以处理这个问题

有点像这样:

<TestRunner xsi:type="TestType1" OutputValue="ResultIndx1"/>
<TestRunner xsi:type="TestType2" InputValue="ResultIndx1"/>

我不相信C#有可能在层次结构的基类中有一个对象,然后通过所有基类共享,是吗

所以这让我更倾向于单身,但如果可能的话,我想避免单身

你有没有想过如何处理这件事


感谢

基类中非私有的静态成员应该足够。

基类中非私有的静态成员应该足够。

您可以在基类中创建对象

您可以在基类中创建对象

感谢您的响应。我在互联网上搜寻信息,我可以发誓我读到基类中的静态是不共享的。看来我被误导了@Firedragon-尝试一下,您将看到,只需在基类中添加一个受保护、内部或公共的静态成员,您就可以从派生类实例访问它。谢谢。如果我这样做
protectedstaticdictionary sharedData=newdictionary()那么所有类只能执行一次,但如果我在一个属性或构造函数中执行此操作,那么我需要检查它是否已初始化,以避免多次执行?是的,最好是在声明它的地方直接执行,这样就不会在每次创建派生类的实例时用新实例覆盖它。或者,您可以通过与null进行比较来检查它是否已经初始化感谢响应。我在互联网上搜寻信息,我可以发誓我读到基类中的静态是不共享的。看来我被误导了@Firedragon-尝试一下,您将看到,只需在基类中添加一个受保护、内部或公共的静态成员,您就可以从派生类实例访问它。谢谢。如果我这样做
protectedstaticdictionary sharedData=newdictionary()那么所有类只能执行一次,但如果我在一个属性或构造函数中执行此操作,那么我需要检查它是否已初始化,以避免多次执行?是的,最好是在声明它的地方直接执行,这样就不会在每次创建派生类的实例时用新实例覆盖它。或者,您可以通过与null进行比较来检查它是否已经初始化