小编Pop*_*ops的帖子

如何使用MVP将服务层消息/错误传递给更高层?

我目前正在从UI编写ASP.Net应用程序.我正在实施一个MVP架构,因为我厌倦了Winforms,并希望能够更好地分离关注点.

因此,使用MVP,Presenter处理由View引发的事件.这是我用来处理用户创建的一些代码:

public class CreateMemberPresenter
{
    private ICreateMemberView view;
    private IMemberTasks tasks;

    public CreateMemberPresenter(ICreateMemberView view) 
        : this(view, new StubMemberTasks())
    {
    }

    public CreateMemberPresenter(ICreateMemberView view, IMemberTasks tasks)
    {
        this.view = view;
        this.tasks = tasks;

        HookupEventHandlersTo(view);
    }

    private void HookupEventHandlersTo(ICreateMemberView view)
    {
        view.CreateMember += delegate { CreateMember(); };
    }

    private void CreateMember()
    {
        if (!view.IsValid)
            return;

        try
        {
            int newUserId;
            tasks.CreateMember(view.NewMember, out newUserId);
            view.NewUserCode = newUserId;
            view.Notify(new NotificationDTO() { Type = NotificationType.Success });
        }
        catch(Exception e)
        {
            this.LogA().Message(string.Format("Error Creating User: {0}", e.Message)); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net mvp exception n-tier-architecture

17
推荐指数
1
解决办法
4773
查看次数

C#的只读("const"式)函数参数

来自C++背景,我习惯于将const关键字粘贴到函数定义中,以使对象以只读值传递.但是,我发现在C#中这是不可能的(如果我错了请纠正我).经过一些谷歌搜索后,我得出的结论是,制作只读对象的唯一方法是编写一个只有'get'属性并将其传入的接口.优雅,我必须说.

public interface IFoo
{
  IMyValInterface MyVal{ get; }
}

public class Foo : IFoo
{
  private ConcreteMyVal _myVal;

  public IMyValInterface MyVal
  {
    get { return _myVal; }
  }
}
Run Code Online (Sandbox Code Playgroud)

我会把它传递给:

public void SomeFunction(IFoo fooVar)
{
  // Cannot modify fooVar, Excellent!!
}
Run Code Online (Sandbox Code Playgroud)

这可以.但是,在我的其余代码中,我想正常修改我的对象.向接口添加"set"属性会破坏我的只读限制.我可以添加一个'set'属性Foo(而不是IFoo),但签名需要一个接口而不是一个具体的对象.我不得不做一些铸造.

// Add this to class Foo. Might assign null if cast fails??
set { _myVal = value as ConcreteMyVal; }

// Somewhere else in the code...
IFoo myFoo = new Foo; …
Run Code Online (Sandbox Code Playgroud)

c# const

17
推荐指数
2
解决办法
2万
查看次数

如何禁用MyEclipse可视化HTML设计器

当我在MyEclipse中打开HTML文件时,我的计算机滞后了几秒钟,或者对已经打开的文件进行了重大更改.我怀疑视觉HTML设计师的WYSIWYG部分是负责任的; 有没有办法关闭它但保留颜色编码的文本编辑器/格式化程序?我也不关心"预览"功能,如果这有所不同.

eclipse myeclipse

16
推荐指数
1
解决办法
1万
查看次数

转换0到1和反Versa

我在接受采访时被问到:如何将0转换为1,将1转换为0.我回答:

  1. 简单if而且switch
  2. 点翻转.

还有其他方法吗?

language-agnostic programming-languages bit-manipulation

16
推荐指数
4
解决办法
1万
查看次数

将Ant构建器集成到Eclipse中:错误"变量引用空选择"

我在Eclipse JDT项目中有一些Ant任务,我想在每次编译之前执行它,所以我在我的Eclipse构建器配置中添加了一个Ant构建器.作为构建文件的位置,我输入了

${workspace_loc:${project_path}/build.xml}
Run Code Online (Sandbox Code Playgroud)

希望有任何绝对路径,或者项目名称,在这里.Eclipse配置是存储库的一部分,其他用户使用不同的文件系统布局和可能不同的Eclipse项目名称来检查它.例如,我通常在Eclipse工作区中拥有同一项目的多个工作副本,每个副本当然都有不同的项目名称.

这大部分时间都有效.但是,我有时会在对话框中收到以下错误消息:

构建期间发生错误.
项目"MyProjectName"上运行构建器"集成外部工具生成器"的错误.
变量引用空选择:$ {project_path}
变量引用空选择:$ {project_path}

这似乎发生在Eclipse决定构建项目时,而在Package Explorer中没有选择项目的资源.我可以通过在项目中创建一个虚拟文件,删除Eclipse外部的文件,在Eclipse中选择它并按下来重现它F5.Eclipse会注意到该文件不再存在,将其从Package Explorer中删除(因此不再选择任何内容),然后构建项目,并给出错误消息.

虽然为每个编译运行Ant任务并不是那么重要,但我不希望有这样的错误消息框会让用户感到困惑.

那我该怎么办?

  • 以不同的方式引用build.xml文件,以便问题消失,或者
  • 解决问题,或
  • 抑制此特定错误的错误对话框?

任何帮助,将不胜感激.我正在使用Eclipse 3.7(Indigo).

java eclipse ant

16
推荐指数
2
解决办法
2万
查看次数

Java中if(!foo)和if(foo == false)之间的性能差异(如果有)是什么?

逻辑上,if(!foo)并且if(foo == false)是等价的.它们如何用Java表示?编译后两者在字节码或性能方面有什么区别吗?我无法在JLS中找到答案,搜索提出了很多关于= vs. ==拼写错误和==/equals()行为的结果.(在这种情况下,符号妨碍了我的搜索;对于未来的搜索者,否定运算符,等于假,等于假,而不是条件).

为了阻止CW辩论:这个问题不是要求人们选择哪种变体,哪种变体被认为是更好的风格.我对语言实现的差异感兴趣,所以有一个正确的答案.相关但不完全是骗局:Java中while(x = false)和while(!x)之间的区别?

编辑:

普遍的共识似乎是一个好的编译器应该优化它们到同一个东西.这是有道理的,也是我所怀疑的,但是 - 提出更多的学术问题 - 这种行为实际上是在任何地方强制执行的,还是"仅仅"是合理的事情?

java syntax performance

15
推荐指数
2
解决办法
756
查看次数

在Mac OS X下进行开发时如何在IE中进行测试?

我在Mac OS X上安装了我的Web应用程序,它已准备好进行IE兼容性测试.我试过运行服务器,启动VMware并且localhost:3000没有运气就拉起来.

如何在IE6-8和Chrome上测试我的Web应用程序而不将其部署到某个地方?

vmware internet-explorer cross-browser

15
推荐指数
2
解决办法
4398
查看次数

使用WebLogic解析XML时出现ClassCastException

我收到以下错误消息:

java.lang.ClassCastException:weblogic.xml.jaxp.RegistryDocumentBuilderFactory无法强制转换为javax.xml.parsers.DocumentBuilderFactory

我经历过一些研究这个问题的论坛.他们说要删除xml-apis.jar或者JAR文件是冲突的.但即使我做了所有建议的步骤,我也遇到了同样的错误.

java myeclipse jsp servlets weblogic

15
推荐指数
3
解决办法
3万
查看次数

<init>在Java异常中表示什么?

<init>在Java异常中表示什么?

例如:

BlahBlahException...

at java.io.FileInputStream.<init>(FileInputStream.java:20)
Run Code Online (Sandbox Code Playgroud)

java exception stack-trace

15
推荐指数
2
解决办法
8003
查看次数

为什么Eclipse无法在Ant构建文件的运行选项中显示"Ant Build"?

通常,当我在Eclipse Package Explorer中右键单击Ant构建文件并从上下文菜单中选择"Run As"时,我会选择"Ant Build"和"Ant Build ..."选项.这是正确的行为.

有一段时间,这些选项会被与Ant无关的选项所取代,例如"JUnit test"和"Java applet".是什么导致Eclipse失去其上下文敏感性而不是在那里显示正确的选项?我该如何解决?

我已经在Windows XP和Windows 7上的Eclipse的多个版本中看到了这一点.无论文件是否被命名似乎都build.xml没有关系.无论是否发生此错误,构建文件都会在Package Explorer中显示Ant图标,而不是通用XML文件图标.即使出现奇怪的行为,运行构建的替代方法也可以正常工作,例如通过"运行"菜单或打开文件并右键单击编辑器.

到目前为止,我能找到的唯一"解决方案"是继续重新启动Eclipse,直到它再次开始工作,这只是踢了一下罐头,而不是实际解决任何问题.

编辑:
我现在偶尔会遇到Maven POM的上下文菜单实例,在"运行方式"下显示Ant构建选项.也许"错误的'Run As'选项"是一个更广泛的Eclipse问题?

eclipse ant

15
推荐指数
1
解决办法
1926
查看次数