Properties 在多个类之间共享属性 我有一个属性很少的类A,B,C。我认为这是一个输入对象,因为我在逻辑中使用这些属性来根据这些属性的值运行一些规则。现在,在运行了这些规则之后,我创建了另一个类作为输出,它具有相同的属性和相同的值,以及一些特定于输出的其他属性

Properties 在多个类之间共享属性 我有一个属性很少的类A,B,C。我认为这是一个输入对象,因为我在逻辑中使用这些属性来根据这些属性的值运行一些规则。现在,在运行了这些规则之后,我创建了另一个类作为输出,它具有相同的属性和相同的值,以及一些特定于输出的其他属性,properties,shared,Properties,Shared,现在,我的问题是如何在输入和输出类之间共享这些属性(A、B、C),而不必手动将输入的值分配给输出。你能推荐一个我需要使用的有效设计吗?抽象类的概念出现在这里了吗?或者还有其他有效的方法吗?使用只具有属性的中间类,然后从输入和输出对象访问该类的实例,但是在大多数情况下,将值从输入复制到输出会更简单。您考虑过使用设计模式吗?我不熟悉您的项目规范,但它似乎可以帮助您,或者至少可以为您提供方向。您可以在输出类上定义隐式运算符(C#),如下所示: public static implicit operat

现在,我的问题是如何在输入和输出类之间共享这些属性(A、B、C),而不必手动将输入的值分配给输出。你能推荐一个我需要使用的有效设计吗?抽象类的概念出现在这里了吗?或者还有其他有效的方法吗?

使用只具有属性的中间类,然后从输入和输出对象访问该类的实例,但是在大多数情况下,将值从输入复制到输出会更简单。

您考虑过使用设计模式吗?我不熟悉您的项目规范,但它似乎可以帮助您,或者至少可以为您提供方向。

您可以在输出类上定义隐式运算符(C#),如下所示:

public static implicit operator OutputClass(InputClass m) 
{
   this.A = m.A;
   this.B = m.B;
   this.C = m.C;
}
那么你所要做的就是:

output = input;

您可以有效地将输入中的所有数据带到输出中。

选项-单例-有效,但取决于重用场景。 除了“new MyObj()”之外,您是否使用任何类型的工厂或实例模式?如果是这样的话,工厂可以做这项工作——这将导致下一种方法——注射。您的语言是否支持注入或其他类型(aka-spring)。您可以定义setter方法,但将其留给注入框架和/或工厂方法来处理/执行设置-同样取决于用例

如果它是基于运行时的,您将需要使用composition-delegate来引用原始对象或中间对象(这反过来会包装a、B、C等)

可能有点离题了,但我假设你的问题是一个简单的例子,只是为了得到一些关于更大问题的建议


属性是动态的-编译时还是运行时?他们是否会改变(即处理来自数据库的动态更新)。您需要在测试工具中运行还是使用模拟值,然后在完整应用程序的上下文中进行测试?

不知道更多,我认为继承和polimorphism是一种方法:

class input 
{
   public int A { get; set;}
   public int B { get; set;}
   public int C { get; set;}
}

class output : input {
   public int D { get; set;}
   public int E { get; set;}
   public int F { get; set;}
}
您只需执行以下操作:

void main()
{
    output tpt = new output();
    tpt.A = 3;
    tpt.B = 2;
    tpt.C = 4;

    tpt = dosomething((input)tpt);
}

public output dosomething(input inpt)
{
    //blablabla
    output tpt = (output)inpt;
    tpt.D = 1;
    tpt.E = 2;
    tpt.F = 3;

    return tpt;
}