问题列表 - 第29525页

n层架构 - BLL,DAL和接口.什么是最佳做法?

我有一个关于n层架构的问题.在问这个问题之前,我想了很久很久,因为这里已经有很多类似的问题......然而,经过一天半的时间看着它并阅读其他答案后,我仍然不确定.各种看似相似的术语和不同的方法令我感到困惑.

如果我在不同的类库中有一个BLL和一个DAL,BLL和DAL之间进行通信的一种方法是利用一个接口,有点像在另一个由BLL和DAL引用的单独DLL中定义的DTO.我在BLL中的域模型实体将实现此接口,因此DAL中的任何ORM生成对象也将实现此接口.为了保存我的业务实体,我可以将它们传递给DAL,它可以接受它们,因为它们实现了共享接口.我还可以将对象传递回实现此接口的BLL.这似乎是合理的,因为BLL和DAL只需要知道基本接口,而不是每个其他具体实现.

我的问题是在另一边创建对象的最佳方法是什么?例如,如果我在BLL中实现了一个实现IPerson的Person对象,以及一个PersonDataObject或同样实现IPerson的DLL中的任何东西,我将Person传递给DAL中的一个方法,该方法接受IPerson的参数,然后在DAL I'中d必须重建PersonDataObject才能持久化.这甚至是最好的方法吗?

对不起,我可能没有解释得太好,因为我很困惑.对于假人答案的最佳做法将非常感激.

architecture orm data-access-layer bll n-layer

2
推荐指数
1
解决办法
2696
查看次数

套接字C# - 本地IP工作,但Internet IP不起作用

伙计们,我实现了一个带有客户端和服务器端的套接字.当我使用我的本地IP(192.168 ...)时,它可以工作.但是,当我把互联网IP,它不起作用!请问的主要原因是什么?

谢谢

c# sockets ip

0
推荐指数
1
解决办法
867
查看次数

如何使用鼠标光标在屏幕上最大化WPF窗口?

根据WindowStartupLocation属性的MSDN文档:

设置CenterScreen会使窗口位于包含鼠标光标的屏幕中央.

虽然CenterScreen字段的MSDN文档本身定义得不那么明确:

窗口的启动位置是打开它的屏幕的中心.

一个简单的测试显示这应该工作:

MainWindow.xaml

<Window x:Class="CenterScreenTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Button Click="button_Click">Open Window</Button>
</Window>
Run Code Online (Sandbox Code Playgroud)

MainWindow.xaml.cs

using System.Windows;

namespace CenterScreenTest
{
    public partial class MainWindow
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        void button_Click(object sender, RoutedEventArgs e)
        {
            Window window = new Window();
            window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
            window.Show();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果在双监视器系统上测试它,您可以看到当您单击按钮时,新窗口将位于鼠标光标所在的屏幕上.这正是它应该如何运作的.

但是,如果在显示窗口之前尝试将窗口设置为最大化,则新窗口将仅在启动应用程序的显示器上最大化.将button_Click事件处理程序更改为以下内容以查看我的意思:

void button_Click(object sender, RoutedEventArgs e)
{
    Window window = new Window();
    window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
    window.WindowState = WindowState.Maximized;
    window.Show();
}
Run Code Online (Sandbox Code Playgroud)

现在,无论单击按钮时鼠标光标在哪里,窗口都只会在启动应用程序的屏幕上最大化.如果在显示窗口状态后将其设置为最大化,则CenterScreen可正常工作.这相当于用户最大化窗口.例如: …

.net wpf multiple-monitors maximize windowstate

44
推荐指数
4
解决办法
6万
查看次数

patricia尝试的python实现

四处寻找尝试的 python 实现,以便我能够理解它们是什么以及它们如何工作,我遇到了 Justin Peel 的patricia trie并发现它非常有指导意义:它足够简单,对于像我这样的新手来说,可以玩它并且从中学习。

但是,我认为我不明白有些事情:

使用贾斯汀的类 patricia() 因此:

>>> p = patricia()
>>> words = ['foo','bar','baz']
>>> for x in words:
...     p.addWord(x)
Run Code Online (Sandbox Code Playgroud)

我得到一个字典,看起来像这样:

>>> p._d
{'b': ['a', {'r': ['', {}], 'z': ['', {}]}], 'f': ['oo', {}]}
Run Code Online (Sandbox Code Playgroud)

addWord() 和 isWord() 按预期工作,但 isPrefix() 显示以下行为让我感到困惑:

>>> p.isPrefix('b')
True
>>> p.isPrefix('f')
True
>>> p.isPrefix('e')
False
Run Code Online (Sandbox Code Playgroud)

不错,符合预期;进而

>>> p.isPrefix('ba')
True
Run Code Online (Sandbox Code Playgroud)

也不错,但是:

>>> p.isPrefix('bal')
True
Run Code Online (Sandbox Code Playgroud)

此外:

>>> p.isPrefix('ballance')
True
>>> p.isPrefix('ballancing act')
True
Run Code Online (Sandbox Code Playgroud)

这里有什么我不明白的吗?

python patricia-trie

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

bison/flex 中的简单 XML 解析器

我想使用 bison/flex创建简单的 xml 解析器。我不需要验证、注释、参数,只需要<tag>value</tag>,其中可以是数字、字符串或其他<tag>value</tag>

例如:

<div>
  <mul>
    <num>20</num>
    <add>
      <num>1</num>
      <num>5</num>
    </add>
  </mul>
  <id>test</id>
</div>
Run Code Online (Sandbox Code Playgroud)

如果有帮助,我知道可能出现的所有标签的名称。我知道给定标签可以容纳多少个子标签。是否可以创建可以执行以下操作的野牛解析器:

- new Tag("num", 1)           // tag1
- new Tag("num", 5)           // tag2
- new Tag("add", tag1, tag2)  // tag3
- new Tag("num", 20)          // tag4
- new Tag("mul", tag4, tag3)
...
- root = top_tag
Run Code Online (Sandbox Code Playgroud)

标签和子标签数量:

  • 数量:1(仅值)
  • str:1(唯一值)
  • 添加 | 子 | 多| div: 2 (num | str | tag, num | str | tag)

你能帮我语法来创建上面给出的 …

bison lexer xml-parsing flex-lexer

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

我怎样才能让Eclipse在#ifdef .... #endif中编入索引代码

我正在使用eclipse来处理一些c代码,它不是像这样在条件编译块中索引代码:

#ifdef USE_FEATURE_A
int feature_a(...) {
   some = code(here);
}
#endif
Run Code Online (Sandbox Code Playgroud)

如何让eclipse索引feature_a函数?

c eclipse indexing

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

如何将大型SVG文件转换为平铺PNG?

我有一个大的SVG文件(大约60 MB,10000x10000像素但有可能变大),我想要创建许多平铺的256x256 PNG图像(在这个例子中会有1600个图像) ;圆形(10000/256)^ 2).

有没有人知道如何在Web服务器上执行此操作(运行PHP等)?我想过rsvg,但它似乎没有任何功能来修改边界框(我宁愿避免为每个部分手动操作).ImageMagick也许可以做到,但我没有太多运气让它运转起来.使用rsvg创建一个大的PNG,然后使用专用于拼贴非常大的图像的工具可能会有效,但我没有运气找到这样的东西!速度并不是一个真正的问题,虽然它是可取的,所以如果最坏的情况发生,我可能会考虑修改SVG的每个部分的边界框.不过,我可以看到这一代人永远在走!

有谁知道这样做的任何方法?

编辑2016-03-02:

我最近再次回到需要这个问题的答案,并且Inkscape似乎是唯一能够以给定大小呈现特定区域的SVG的工具(svgexport几乎满足这些要求,但它不允许您更改宽高比) .

我的目标是将SVG平铺到256x256磁贴中,现在我已经成功制作了一个脚本,可以通过重复渲染inkscape大约16,000 x 16,000并平铺生成的图像来平铺任意大的SVG .我已成功渲染尺寸超过500,000 x 500,000像素的SVG - 内存使用没有问题(这需要很长时间!)

php linux svg imagemagick rsvg

6
推荐指数
1
解决办法
4175
查看次数

无法使用RSpec 2和Edge Rails 3进行控制器测试

不确定这是Rails 3问题还是RSpec 2问题,但我似乎无法使标准控制器测试工作 - 似乎找不到'get'方法.

我有一个看起来像这样的控制器测试(discrepancies_controller_spec.rbspec/controllers目录中命名):

require 'spec_helper'

describe DiscrepanciesController do
  before :each do
    Discrepancy.delete_all
  end

  it "resolves a discrepancy" do
 discrepancy = Discrepancy.create(:my_number=>"12345", :status=>"Open")

 get :resolve, :id => discrepancy.id

 retrieved_discrepancy = Discrepancy.find_by_my_number("12345")
 retrieved_discrepancy.status.should == "Resolved"
  end
end
Run Code Online (Sandbox Code Playgroud)

(是的,我知道使用HTTP/GET修改数据的安全隐患 - 这是一个单独的问题......)

当我用rake运行它时,我收到以下错误:

1) DiscrepanciesController resolves a discrepanc
    Failure/Error: Unable to find C to read failed line
    undefined method `get' for #<RSpec::Core::ExampleGroup::Nested_1:0xc9170d0 @__memoized={}>
    # ./spec/controllers/discrepancies_controller_spec.rb:38 (ignore the line number, commented out code was removed from the sample) …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails-3

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

记事本++常规正则表达式

我有一个文件,我在记事本++中打开,有以下行,return 1.我也有这样的情况,它说return 2我希望能够在哪里找到!return 1.所以我想找到并计算所有不是的东西return 1

谢谢

notepad++

2
推荐指数
1
解决办法
422
查看次数

Fortran 90存在可选参数

我不理解使用pgf90 7.2的present()内在函数的行为.我写了一个20行的示例程序来测试这个,但结果对我来说仍然没有意义.注意:


subroutine testopt(one,two,three,four,five)

  implicit none

  integer, intent(in) :: one,two
  integer, intent(out) :: three
  integer, intent(in), optional :: four
  integer, intent(out), optional :: five

  three = one + two

  print *,"present check: ",present(four),present(five)

  if (present(four) .and. present(five)) then

  five = four*four

end if

end subroutine testopt
Run Code Online (Sandbox Code Playgroud)

如果我:从我的主程序调用testopt(1,2,(任何变量)),它打印:"present check:T F".但是如果我:从子程序中调用testopt(1,2,(任何变量)),它会打印:"present check:T T".我希望在任何一种情况下都能看到"当前检查:F F",因为我只使用3个非可选参数调用子程序,而不是任何可选参数.我无法理解为什么它会以这种方式运行,这导致我正在处理的程序中的一个主要错误.我很欣赏任何见解.谢谢.

fortran optional-parameters fortran90

9
推荐指数
1
解决办法
8516
查看次数