我的问题与命令模式有关,我们有以下抽象(C#代码):
public interface ICommand
{
void Execute();
}
Run Code Online (Sandbox Code Playgroud)
让我们来看一个简单的具体命令,它旨在从我们的应用程序中删除一个实体.Person例如,一个实例.
我会有一个DeletePersonCommand实现的ICommand.此命令需要Person删除作为参数,以便在Execute调用方法时将其删除.
管理参数化命令的最佳方法是什么?在执行参数之前如何将参数传递给命令?
目前我正在尝试在一个简单的测试项目中实现事务脚本模式(正是Martin Fowler如何使用Command Pattern 描述),一切正常,问题是我不知道如何在指定时得到结果在具体类中执行的方法,它继承自ICommand接口.
让我们向您展示一些代码,以阐明我的功能.我有一个简单的CalculateSalaryCommand类,它继承自ICommand接口
public class CalculateSalaryCommand : ICommand
{
private readonly CalculateSalaryTS _salaryTs;
private readonly int _hour;
private readonly int _salaryPerHour;
public CalculateSalaryCommand(CalculateSalaryTS salaryTs, int hour, int salaryPerHour)
{
_salaryTs = salaryTs;
_hour = hour;
_salaryPerHour = salaryPerHour;
}
public void Execute()
{
_salaryTs.CalculateSalary(_hour, _salaryPerHour);
}
}
Run Code Online (Sandbox Code Playgroud)
和一个名为CalculateSalaryTS的简单Transaction Script类
public class CalculateSalaryTS {
public void CalculateSalary(int _hour, int _salaryPerHour) {
Result = _hour * _salaryPerHour;
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我将实例传递给具体命令类,然后在Execute方法内部执行该实例的操作.好吧,一切都很好看.但有一个问题我无法返回执行方法的结果,应该是一个整数.为了解决这个问题,我决定在Transaction Script层添加一些代码,每个事务应该从一个通用ITransactionResult接口继承,如下所示:
public interface ITransactionResult<TResult>
{
TResult …Run Code Online (Sandbox Code Playgroud) 正如问题所暗示的,我有一个简单的java应用程序(又名“简单的主”),需要初始化一个hibernate连接,其信息位于context.xml.
经过大量搜索和一些技巧后,我得出以下结论:
public static void main(String[] args) {
//JNDI provider is needed and RMI registry has one...
try {
java.rmi.registry.LocateRegistry.createRegistry(1099);
System.out.println("RMI registry ready.");
} catch (Exception e) {
System.out.println("Exception starting RMI registry:");
e.printStackTrace();
}
new InitialContext().readContextXml("context.xml");//of course there is nothing like that. But is there an equivalent?
String result = thatWillConnectWithHibernate();
System.out.println(result);
}
private static String thatWillConnectWithHibernate() {
//does stuff
}
Run Code Online (Sandbox Code Playgroud)
那么有没有一种简单的方法可以从 xml 文件创建一个 InitialContext 呢?我对手动解析文件不感兴趣,我可以自己做。
我最近将NLog添加到我的解决方案中,我注意到该packages\NLog.4.4.12\lib目录包含以下目录。
我的项目仅针对 .net 4.0 和 .net 4.5。我怎样才能摆脱其余的?我在 VS 2017 nuget 包管理器中进行了搜索,但找不到任何明显的东西。