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