C# 在运行时构建对象
我有许多需要创建并添加到数组中的对象。然而,下面的代码看起来很脏,很难长期维护。我的想法是,我应该将名称和值属性存储在一个表中,并在运行时构建每个comCommand对象 然而,我不确定做这件事的最佳方法是什么。。。反射、Activator.CreateInstance或某种对象工厂 提前谢谢C# 在运行时构建对象,c#,.net,design-patterns,C#,.net,Design Patterns,我有许多需要创建并添加到数组中的对象。然而,下面的代码看起来很脏,很难长期维护。我的想法是,我应该将名称和值属性存储在一个表中,并在运行时构建每个comCommand对象 然而,我不确定做这件事的最佳方法是什么。。。反射、Activator.CreateInstance或某种对象工厂 提前谢谢 var engine = new comCommand() { commandName = "-e", commandValue = "PNetTNative" }; var outputFile =
var engine = new comCommand() { commandName = "-e", commandValue = "PNetTNative" };
var outputFile = new comCommand() { commandName = "-f", commandValue = OutputFile };
var groupSize = new comCommand() { commandName = "-GroupSizeParamInput1ParamsIn", commandValue = GroupSize };
var pagesPerSheet = new comCommand() { commandName = "-PagesPerSheetParamInput1ParamsIn", commandValue = PagesPerSheet };
var outputFileName = new comCommand { commandName = "-OutputFileNameParamInput1ParamsIn", commandValue = OutputFileName };
var duplex = new comCommand { commandName = "-DuplexParamInput1ParamsIn", commandValue = Duplex };
var processId = new comCommand { commandName = "-ProcessIDParamInput1ParamsIn", commandValue = ProcessID };
var request = new comRunWorkFlowReq();
request.command = new[] { engine, outputFile, groupSize, pagesPerSheet, outputFileName, duplex, processId };
创建一个命令构造函数(正如Kirk所建议的),并保持它的原样:多个comCommand(“-e”,“PNetTNative”)等调用
将其保留在代码中的原因是您得到了编译器时间类型和错误检查。。。是的,您可以在运行时执行(各种方法),但对于仅7个声明,最好将其保持在编译时。如果您只声明了一个正确的构造函数,那么您就可以执行
新的comCommand(“-e”,“PNetTNative”)
。而且,小写类名是完全不标准的。真的应该是ComCommand
。谢谢你的建议。我同意你的观点,但是comCommand类不是我自己实现的,我有7个声明。我只放了一小部分overall方法。谢谢你的建议,我还是喜欢把它保存在可以编译的代码中,只要项目的“列表”是静态的(在运行时不会改变)。从目前为止您给出的代码来看,它似乎是一个命令行工具的接口,因此您可以非常安全地直接在代码中实现它您得到了它。。。我正在创建一个运行此第三方应用程序的流程。我非常感谢你的建议。