问题列表 - 第15824页

POCO应该来自DTO还是更好?

在创建n层解决方案时,我不想公开我的业务对象,而是使用DTO而不是这个.另一方面,我不想一直双重定义对象和编写复制代码.

现在我的想法是编写包含所有必要字段和属性的DTO,但没有逻辑(只有状态).

然后我将从这些DTO派生我的业务对象,使用我的业务逻辑扩展它们,处理DTO基类属性.这些对象也将是所使用的ORM中持久存在的对象(NHibernate).

使用这种方法,在服务器端,我可以处理业务对象并将它们直接传递给客户端(它们是派生的,因此可以向下转换).我不会被迫以这种方式暴露我的业务逻辑并节省大量代码.

你认为这种做法是明智的吗?

问候,

塞巴斯蒂安

c# architecture poco dto n-tier-architecture

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

使用xlinq删除所有空元素

我正在使用xlinq进行一些变换,其中一些变换可能导致在文档中留下空元素.

完成所有这些转换后,如何查询xdocument中的所有空元素?

换一种说法; 如果我删除了<a>碰巧是<li>标签内唯一元素的所有标签,我该如何删除空标签<li>

之前:

XDocument.Parse(@"<body>
   <ul><li><a href="#">Joy</a></li></ul>
   <p>Hi.</p>
</body>").Descendants("a").Remove();
Run Code Online (Sandbox Code Playgroud)

后:

<body>
   <ul><li/></ul>
   <p>Hi.</p>
</body>
Run Code Online (Sandbox Code Playgroud)

我会比较喜欢:

<body>
   <p>Hi.</p>
</body>
Run Code Online (Sandbox Code Playgroud)

xml linq-to-xml

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

使用Compression ActionFilter,服务器错误消息会清除内容编码标头并呈现为乱码

当我使用压缩过滤器并获得错误时,错误页面只是乱码字符.问题似乎是当IIS转移到错误页面时,压缩过滤器仍然有效,但标题被清除.如果没有"Content-encoding:gzip"标头,浏览器只会显示原始gzip二进制数据.

我正在使用IIS7.5,ASP.NET MVC 2 Preview 2和一个看起来像这样的ActionFilter:

public class CompressResponseAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var request = filterContext.HttpContext.Request;
        var response = filterContext.HttpContext.Response;

        var acceptEncoding = request.Headers["Accept-Encoding"];

        if (string.IsNullOrEmpty(acceptEncoding))
            return;

        acceptEncoding = acceptEncoding.ToLowerInvariant();

        if (acceptEncoding.Contains("gzip"))
        {
            response.AppendHeader("Content-encoding", "gzip");
            response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
        }
        else if (acceptEncoding.Contains("deflate"))
        {
            response.AppendHeader("Content-encoding", "deflate");
            response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有人经历过这个吗?

compression asp.net-mvc

12
推荐指数
1
解决办法
1526
查看次数

将列值收集到数组中

我在开发时经常遇到的一种模式是尝试从一组对象中收集一个列/属性值到一个数组中.例如:

$ids = array();
foreach ($documents as $document) {
    $ids[] =  $document->name;
}
Run Code Online (Sandbox Code Playgroud)

我是唯一一个碰到这个的人吗?PHP有没有办法用更少的行来解决这个问题?我看了,却一无所获.

由于我使用MVC框架,因此我可以访问BaseUtil类,该类包含不适合任何特定类的常用函数.同事提出的一个解决方案是:

class BaseUtil
{
    public static function collect($collection, $property) {
        $values = array();
        foreach ($collection as $item) {
            $values[] = $item->{$property};
        }
        return $values;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我可以这样做:

$ids = BaseUtil::collect($documents, 'name');
Run Code Online (Sandbox Code Playgroud)

不是太寒酸.其他人还有其他想法吗?我是疯了还是这看起来像PHP应该在很久以前解决的问题?

php

8
推荐指数
1
解决办法
6747
查看次数

查找具有相同内部表示的float/double的最小值/最大值

刷新浮点(也是PDF),IEEE-754并参与有关转换为字符串时浮点舍入的讨论,让我修补一下:如何获得给定浮点数的二进制表示的最大值和最小值是平等的.

免责声明:对于本次讨论,我喜欢坚持IEEE-754所描述的32位和64位浮点.我对扩展浮点(80位)或四边形(128位IEEE-754-2008)或任何其他标准(IEEE-854)不感兴趣.

背景:计算机不能0.1用二进制表示来表示.在C#中,float表示3DCCCCCD内部(C#使用round-to-nearest)和double表示3FB999999999999A.相同的位模式用于十进制0.100000005(float)和0.1000000000000000124(double),但不用于0.1000000000000000144(double).

为方便起见,以下C#代码给出了这些内部表示:

string GetHex(float f)
{
    return BitConverter.ToUInt32(BitConverter.GetBytes(f), 0).ToString("X");
}

string GetHex(double d)
{
    return BitConverter.ToUInt64(BitConverter.GetBytes(d), 0).ToString("X");
}

// float
Console.WriteLine(GetHex(0.1F));

// double 
Console.WriteLine(GetHex(0.1));
Run Code Online (Sandbox Code Playgroud)

在这种情况下0.1,没有用相同的位模式表示的低十进制数,任何0.99...99将产生不同的位表示(即,在内部为0.999999937yield产生浮点数3F7FFFFF).

我的问题很简单:如何找到内部存储在同一二进制表示中的给定float(或double)的最低和最高十进制值.

为什么 :(我知道你会问)在转换为字符串时从.NET中舍入时发现错误,当它从字符串转换时,找到内部精确值并更好地理解我自己的舍入错误.

我的猜测是这样的:取尾数,移除其余部分,得到其精确值,得到一个(尾数位)更高,并计算平均值:低于该值的任何东西将产生相同的位模式.我的主要问题是:如何将小数部分作为整数(位操纵它不是我最强的资产).Jon Skeet的DoubleConverter课程可能会有所帮助.

.net c# floating-point bit-manipulation ieee-754

7
推荐指数
1
解决办法
2108
查看次数

Visual Studio提供的Monodevelop缺少什么?

如果他们切换到Monodevelop,开发人员在Visual Studio中工作的东西必须放弃什么?这个假设的开发人员通常使用C#开发ASP.NET Web应用程序.

我知道Monodevelop具有基本的Visual Studio功能,如语法突出显示和对Visual Studio解决方案的支持.哪些缺陷会影响放弃Visual Studio的开发人员的工作效率

为了保持一致,请将您的答案局限于有关Visual Studio 2008Monodevelop 2.0的要点.

.net mono monodevelop visual-studio-2008 visual-studio

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

拥有一个不可编辑但可选择的文本框

我正在制作一个网络应用程序.有时,表格可能是"只读".为了用HTML模拟这个,我有了它,所以包含内容的所有(动态创建的)文本框都被禁用.这样工作得很好,但是如果有很多文本并且不是所有文本都可以立即显示(特别是在多行框中),那么用户就无法在其中滚动.另外,另一个问题是无法从禁用的文本框中复制和粘贴文本.

所以我需要的是一种方法,使你不能修改文本框中的内容,但你可以选择文本,滚动条工作.

另外,我在Firefox 3.5中对此进行了测试,但我认为IE有类似的问题.(请同时兼容两者)

html asp.net textbox readonly

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

允许服务器/用户控件上的任何属性/属性

我注意到在System.Web.UI.WebControls命名空间中的大多数(如果不是全部)标准Web控件上,您可以添加所需的任何属性而不会使页面崩溃.

以asp:Button控件为例.

此代码完全有效:

<form runat="server">
    <asp:Button runat="server" Text="Test button" crapAttribute="crapValue" />
</form>
Run Code Online (Sandbox Code Playgroud)

现在,我有一个自定义服务器控件,如果我添加任意属性,它会崩溃.它只接受定义了相应公共属性的属性.

我得到的错误是这样的"控件没有名为"crapAttribute"的公共属性.

我希望我的自定义控件接受任何属性而不会崩溃.我需要做些什么才能工作?

我看过Reflector中的标准控件,它们确实有各种各样的属性和东西,但是我看到的东西没有立即引起我的注意.

我的自定义控件继承自WebControl的价值.

asp.net user-controls properties servercontrol

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

确定重复信用卡号码而不存储它们的最佳方法是什么?

我运行一个网站,我们将某些帐户标记为诈骗者,并"标记"他们的帐户和所有用作坏帐户的信用卡.我们不存储实际的信用卡值,而是存储校验和/ MD5算法.

我们现在一直在碰撞.存储这些值的最佳方法是什么 - 不可逆,但能够对未来值进行比较.

我认为MD5会是最好的,但我们在这里进行辩论......

passwords md5 cryptography credit-card

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

在Django admin中按自定义日期范围过滤

可以通过自定义日期范围,即用两个Django管理站点选择项DateFieldsAdminDateWidget?我知道有date_hierarchylist_filter属性,但是当有很多数据库条目并且你只需要按精确date__gtedate__lte查询过滤项目时它们似乎不是很有用.

django date filter django-admin

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