在创建n层解决方案时,我不想公开我的业务对象,而是使用DTO而不是这个.另一方面,我不想一直双重定义对象和编写复制代码.
现在我的想法是编写包含所有必要字段和属性的DTO,但没有逻辑(只有状态).
然后我将从这些DTO派生我的业务对象,使用我的业务逻辑扩展它们,处理DTO基类属性.这些对象也将是所使用的ORM中持久存在的对象(NHibernate).
使用这种方法,在服务器端,我可以处理业务对象并将它们直接传递给客户端(它们是派生的,因此可以向下转换).我不会被迫以这种方式暴露我的业务逻辑并节省大量代码.
你认为这种做法是明智的吗?
问候,
塞巴斯蒂安
我正在使用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) 当我使用压缩过滤器并获得错误时,错误页面只是乱码字符.问题似乎是当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)
有人经历过这个吗?
我在开发时经常遇到的一种模式是尝试从一组对象中收集一个列/属性值到一个数组中.例如:
$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应该在很久以前解决的问题?
刷新浮点(也是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课程可能会有所帮助.
如果他们切换到Monodevelop,开发人员在Visual Studio中工作的东西必须放弃什么?这个假设的开发人员通常使用C#开发ASP.NET Web应用程序.
我知道Monodevelop具有基本的Visual Studio功能,如语法突出显示和对Visual Studio解决方案的支持.哪些缺陷会影响放弃Visual Studio的开发人员的工作效率?
为了保持一致,请将您的答案局限于有关Visual Studio 2008和Monodevelop 2.0的要点.
我正在制作一个网络应用程序.有时,表格可能是"只读".为了用HTML模拟这个,我有了它,所以包含内容的所有(动态创建的)文本框都被禁用.这样工作得很好,但是如果有很多文本并且不是所有文本都可以立即显示(特别是在多行框中),那么用户就无法在其中滚动.另外,另一个问题是无法从禁用的文本框中复制和粘贴文本.
所以我需要的是一种方法,使你不能修改文本框中的内容,但你可以选择文本,滚动条工作.
另外,我在Firefox 3.5中对此进行了测试,但我认为IE有类似的问题.(请同时兼容两者)
我注意到在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的价值.
我运行一个网站,我们将某些帐户标记为诈骗者,并"标记"他们的帐户和所有用作坏帐户的信用卡.我们不存储实际的信用卡值,而是存储校验和/ MD5算法.
我们现在一直在碰撞.存储这些值的最佳方法是什么 - 不可逆,但能够对未来值进行比较.
我认为MD5会是最好的,但我们在这里进行辩论......
可以通过自定义日期范围,即用两个Django管理站点选择项DateFields有AdminDateWidget?我知道有date_hierarchy和list_filter属性,但是当有很多数据库条目并且你只需要按精确date__gte和date__lte查询过滤项目时它们似乎不是很有用.
.net ×2
asp.net ×2
c# ×2
architecture ×1
asp.net-mvc ×1
compression ×1
credit-card ×1
cryptography ×1
date ×1
django ×1
django-admin ×1
dto ×1
filter ×1
html ×1
ieee-754 ×1
linq-to-xml ×1
md5 ×1
mono ×1
monodevelop ×1
passwords ×1
php ×1
poco ×1
properties ×1
readonly ×1
textbox ×1
xml ×1