小编Ste*_*dis的帖子

命令模式:如何将参数传递给命令?

我的问题与命令模式有关,我们有以下抽象(C#代码):

public interface ICommand
{
    void Execute();
}
Run Code Online (Sandbox Code Playgroud)

让我们来看一个简单的具体命令,它旨在从我们的应用程序中删除一个实体.Person例如,一个实例.

我会有一个DeletePersonCommand实现的ICommand.此命令需要Person删除作为参数,以便在Execute调用方法时将其删除.

管理参数化命令的最佳方法是什么?在执行参数之前如何将参数传递给命令?

c# design-patterns command-pattern

60
推荐指数
8
解决办法
4万
查看次数

在Command Pattern中获取执行方法的结果

目前我正在尝试在一个简单的测试项目中实现事务脚本模式(正是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)

c# architecture design-patterns command-pattern

11
推荐指数
2
解决办法
8805
查看次数

在纯 java 应用程序中从 context.xml 创建 InitialContext

正如问题所暗示的,我有一个简单的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 呢?我对手动解析文件不感兴趣,我可以自己做。

java jndi initial-context

5
推荐指数
0
解决办法
297
查看次数

如何仅为特定平台下载 nuget 包?

我最近将NLog添加到我的解决方案中,我注意到该packages\NLog.4.4.12\lib目录包含以下目录。

  • MonoAndroid10
  • 网35
  • 网40
  • 网45
  • SL4
  • SL5
  • WP8
  • Xamarin.iOS10

我的项目仅针对 .net 4.0 和 .net 4.5。我怎样才能摆脱其余的?我在 VS 2017 nuget 包管理器中进行了搜索,但找不到任何明显的东西。

visual-studio nuget-package

5
推荐指数
1
解决办法
554
查看次数