当有人想采用简单的原始办法时,C#中的重新流行做法是什么?
因此,基本上我有一个处理圈子,我想视用户选择的多少,采取不同的行动加以占用。 让我们说,处理法有两个不同之处,根据用户投入,逻辑(编码)有所不同。 例如,用户可以选择基于网络或基于文档的上载。 因此,我真的想把两种具体方法带入加工场,以代表他们。
有什么建议?
增 编
当有人想采用简单的原始办法时,C#中的重新流行做法是什么?
因此,基本上我有一个处理圈子,我想视用户选择的多少,采取不同的行动加以占用。 让我们说,处理法有两个不同之处,根据用户投入,逻辑(编码)有所不同。 例如,用户可以选择基于网络或基于文档的上载。 因此,我真的想把两种具体方法带入加工场,以代表他们。
有什么建议?
增 编
你们是否真的需要以(传统)原始方式解决这一问题? 我认为,我个人并不这样认为,这样做对我来说是站不住脚的,因为试图使解决真正是一个简单的问题复杂化。
我这样做的方式是建立一个单独的服务类别,负责根据上载类型处理逻辑。 拥有确定用户选择哪类上载量的总库,然后立即说明如何具体落实服务类别来进行处理。
public enum FileUploadType { File, Web } public interface IProcessingService { void Process(); object GetResults(); // or whatever you want to do with the results of processing } public void Process(FileUploadType fileUploadType) { IProcessingService service; switch(type) { case FileUploadType.File: service = new FileUploadProcessingService(); break; case FileUploadType.Web: service = new WebUploadProcessingService(); break; default: /* log error */ break; } service.Process(); /* do something with results of processing */ }
如果你随后决定你希望开始使用IoC集装箱,或引入适当的原始机制,那么你可以很容易地证明这一点。
或许,你们应当看到控制模式的转化(排外注射),这基本上涉及在运行时间(非常少说几句)解决一个接口的实施问题。
其他人提到<代码> 代表代码>,如果你重新控制所有代码和功能说明,这是最佳办法,但如果你
总体做法是,你的申请(东道申请)将出版/发行带有特定接口的大会。 其他开发商将撰写其集会,并确保他们的班级采用您的申请界面。 然后,东道国的申请通常会通过一个包含“插头”组件的夹子进行查点,并确定一个能够实施其接口的类别。 然后,东道国的申请将动态地装上这些集会,并即时上课。
这里可以找到关于这一总体做法的良好指导:
Managed Extensibility Framework也是一般用途原始结构的另一个选择,但对于你试图实现的目标来说,可能过于熟练。
代表。
delegate void DoSomething1(int x, double y);
delegate int DoSomething2(string s);
void MainWork(DoSomething1 something1, DoSomething2 something2)
{
}
在叫作“主要工作”时,你可以挑选一些适当的方法。
void Do1(int x, double y) { }
int Do2(string s) { }
MainWork(Do1, Do2);
是否请见Microsoft s Managed Extensibility Framework?
从内部来看:
管理下可扩展性框架是一个新图书馆。 能够进一步重复应用和部件的网络。 利用微型信贷额度,NET应用能够从静态汇编到动态组合。 如果你正在建立可扩展的申请、可扩展的框架和申请延期,则由您担任。
你可以使用代表,或采取部分方法,允许在你的法典中打hoo,但这意味着大会必须重组。
<>条码/代码”有什么错误?
难道不像这样简单的东西吗?
if (IsCase1(userInput))
{
... do case 1 actions
}
else
{
... do case2 actions
}
我不想使事情复杂化。 这里的关键点是,需要吗? 如果你真的需要把这一功能作为参数,我将使用代表解决方案(下一个更简单的方案),而只是将假想作为最后的手段。
牢记科索沃统计局的原则!