小编Kin*_*han的帖子

为什么要使用Repository Pattern或者请向我解释一下?

我正在学习存储库模式,正在阅读存储库模式,包括实体框架4.1和代码优先 通用存储库模式 - 实体框架,ASP.NET MVC和单元测试三角 关于它们如何使用实体框架实现存储库模式.

•从上层隐藏EF
•使代码更易于测试

使代码更易于测试我理解,但为什么要从上层隐藏EF?

看看它们的实现,似乎只是用实体方法包装实体框架来查询实体框架.实际上是这样做的原因是什么?

我假设是为了

  1. 松耦合(这就是为什么将EF隐藏在上层?)
  2. 避免重复写入相同查询的相同LINQ语句

我理解正确吗?

如果我写一个DataAccessLayer,这是一个有方法的类

QueryFooObject(int id)
{
..//query foo from entity framework
} 

AddFooObject(Foo obj)
{
.. //add foo to entity framework
}
......
QueryBarObject(int id)
{
..
}

AddBarObject(Bar obj)
{
...
}
Run Code Online (Sandbox Code Playgroud)

这也是一个存储库模式吗?

假人的解释会很棒:)

c# entity-framework repository-pattern

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

我可以在WPF中使用一个具有多个TargetType的样式吗?

标题为,我的意思如下:

<Style TargetType="{x:Type TextBlock}" 
       TargetType="{x:Type Label}"  
       TargetType="{x:Type Button}" >
Run Code Online (Sandbox Code Playgroud)

这实际上是为了使用第三方控件,我继承了他们的类.但是模板不适用于SubClass,因为TargetType它位于基类上.所以我想设置多个TargetTypes以使它能够同时申请.

c# silverlight wpf targettype

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

iOS测试App Receipt验证

有很多关于如何使用沙盒测试器帐户测试应用内购买收据验证的示例.

但付费应用程序本身的收据如何?我们如何在开发环境中获得App Receipt?

我想做两件事:

  • 防止非购买应用程序的用户运行我们的应用程序的非法复制.正如我所看到的那样,检测到连接的iTune帐户的应用程序并不拥有应用程序(它向用户显示警告他们没有应用程序,但是他们无法阻止用户继续使用该应用程序)

  • 将应用购买收据发送到我们的服务器.我们想知道他们何时购买我们的应用程序,他们带来了什么版本的应用程序.

ios receipt receipt-validation

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

如何在宽度自动列中TextWrap TextBlock?

所以考虑如下:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <TextBlock x:Name="WrapTextBlock" Grid.Column="0" Text="123 456 789 0123 4456 123  123  123  123 1 23  123 " TextWrapping="Wrap" />
    <TextBlock x:Name="NotWrapTextBlock" Grid.Column="1" Text="GGG" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

这个xaml将允许WrapTextBlock文本换行,这样做,WrapTextBlock将占用所有空间并NotWrapTextBlock向右推.

但我想要做的是尽量WrapTextBlock减少占用空间,然后NotWrapTextBlock向右推动WrapTextBlock 并用空的空间填充右侧.这意味着以下内容:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <TextBlock x:Name="WrapTextBlock" Grid.Column="0" Text="123 456 789 0123 4456 123  123  123  123 1 23  123 " TextWrapping="Wrap" />
    <TextBlock x:Name="NotWrapTextBlock" Grid.Column="1" Text="GGG" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

但这里的事情是,现在文本 …

silverlight wpf xaml textblock

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

在C#中调用C++ dll时无法找到入口点

我正在尝试学习P/Invoke,所以我在C++中创建了一个简单的dll

KingFucs.h:

namespace KingFuncs
{
    class KingFuncs
    {
    public:
        static __declspec(dllexport) int GiveMeNumber(int i);
    };
}
Run Code Online (Sandbox Code Playgroud)

KingFuns.cpp:

#include "KingFuncs.h"
#include <stdexcept>

using namespace std;

namespace KingFuncs
{
    int KingFuncs::GiveMeNumber(int i)
    {
        return i;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以它编译,然后我将这个DLL复制到我的WPF的调试文件夹中,代码如下:

[DllImport("KingFuncDll.dll", EntryPoint = "GiveMeNumber", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
        public static extern int GiveMeNumber(
              int i
              );
Run Code Online (Sandbox Code Playgroud)

并在按钮单击中调用它:

private void Button_Click(object sender, RoutedEventArgs e)
{
    int num = GiveMeNumber(123);
}
Run Code Online (Sandbox Code Playgroud)

但它给了我例外:

无法在DLL"KingFuncDll.dll"中找到名为"GiveMeNumber"的入口点.

真的......我做错了什么......显然能找到DLL,否则会是另一个例外.但我的方法名称完全一样......我想不出其他原因.

c# c++ pinvoke

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

是否可以在不设置DataContext的情况下绑定代码隐藏属性?

正如标题,我看到similiar问题的夫妇在左右,但我没有看到它的解决方案.

我知道如果我需要绑定到code-beind,我需要设置 Datacontext = this

但我的问题是我的datacontext已经绑定到我的ViewModel,但我想使用在code-beind中定义的Command进行一些UI操作.

是否可以在xaml中绑定它?如果是这样,怎么样?

编辑:我确实尝试了以下内容:

<Window x:Class="WpfApplication3.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300" x:Name="_Root">
<Grid x:Name="hellogrid">
    <TextBlock x:Name="myTextBlock" Text="AAAA"/>
    <Button Margin="82,119,121,120" Name="button2" Content="{Binding Path=Text, ElementName=myTextBlock}"/>
    <Button Margin="82,72,121,0" Name="button3" Content="{Binding Path=MyText, ElementName=_Root}" Height="23" VerticalAlignment="Top" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

代码隐藏:

public partial class Window1 : Window
{
    public string MyText { get; set; }

    public Window1()
    {
        InitializeComponent();
        MyText = "ABC";
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以看到Button2显示AAAA,但Button3没有显示任何内容....

wpf xaml

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

为什么Tcp比http更快?

我与我的经理进行了讨论,他说tcp比http更快,因为tcp在低于http的层上工作.

然后我记得我在大学里学到的OSI模型,所以我认为他的意思是因为http工作在应用层,但tcp工作在传输层(下面是2层)所以更快......

所以我的问题是:

  1. 较低层的工作速度是否比上层更快是因为在两台计算机之间进行数据传输时需要访问的层数较少?

  2. 如果是这样,那就意味着当我们使用tcp(即使用WCF)时,通信将从传输层开始=>向下到物理层=>另一台计算机的物理层=>到传输层?但是我仍然需要通过应用程序来理解数据,所以仍然需要进入Application层?

提前致谢.

wcf networking tcp osi

13
推荐指数
2
解决办法
6894
查看次数

可以举个例子,说明何时应该使用UIElement.UpdateLayout()?

我正在阅读MSDN中的这个UpdateLayout()方法.

它说:

确保为布局正确更新此元素的所有可视子元素.

但我不明白布局没有正确更新是什么意思.

我已经使用Silverlight/WPF超过一年了,但我还没有使用过这种方法一次.

那么有人可以给我一个需要使用这种方法的例子吗?所以我真的能理解它的作用以及何时使用它?

c# silverlight wpf user-interface

11
推荐指数
1
解决办法
4569
查看次数

是否有用于添加HttpResponseHeader的内容标题类型?

我在HttpResponseHeaders中看到的唯一方法是Add,它采用字符串类型的字符串类型.我只是想知道.NET在字符串中提供了HttpResponseHeader类型的列表吗?

所以我可以这样做:

HttpResponseMessage response = Request.CreateResponse.........;
response.Headers.Add(xxxxx.ContentRange, "something");
Run Code Online (Sandbox Code Playgroud)

我可以看到HttpResponseHeader中有一个Enum列表,但是它没有提供相应的字符串值...

即HttpResponseHeader.ContentRange,但正确的标题字符串应为Content-Range

如果我错了,请纠正我......

.net c# http-response-codes

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

是否可以在 PHP 中使用大的 unsigned int64 而不会丢失精度?

我了解整数大小,PHP_INT_MAX取决于平台。

在 64 位系统上,我可以得到:

$large_number = 9223372036854775807
Run Code Online (Sandbox Code Playgroud)

从我从此处的 PHP 文档示例 3 中读取的内容来看,当整数溢出时,PHP 将整数处理为浮点数,精度约为 14 位小数,即:

Unsigned Int64: 18446744073709551615

PHP will handles as: 1.844674407371E+19
Run Code Online (Sandbox Code Playgroud)

所以似乎所有的精度都只保持在 Signed Int64 的最大值。

这真的只是 PHP 的一个限制而我对此无能为力吗?

php

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