我有两个POCO类型,A和B.我有一个存储库,每个,Rep <A>和Rep <B>,它们都实现了由IoC容器(在这种情况下为AutoFac)提供的IRep <A>和IRep <B>.
有几种存储库 - 来自数据库(或其他)的按需加载,延迟加载的内存中集合,缓存的Web服务结果等.调用者无法区分.Rep <A>和Rep <B>碰巧都是内存中的集合,因为A和B的变化不大并且活很长时间.
B的一个属性是A.我现在做的是,当B要求它的A时,B得到IRep <A>找到它的A并返回它.它每次都这样做 - 每次请求B的A都涉及IRep <A> .Find().好处是B从不持有A,每个请求都考虑到Rep的状态.缺点是很多IoC/IRep <A>流失.
我正在考虑在<T这里使用Lazy >模式,这样B就会询问IRep <A>一次并保持它所得到的.但是如果A从其存储库中删除会发生什么?
我正在为Rep <A> 寻找一个干净的方式来通知任何感兴趣的人.在我的例子中,可能会删除某个B的A,所以我希望Rep <A>在删除或添加某些内容时引发事件等.Rep <B>可能会订阅此事件以清除任何引用A的B.现在已经消失,等等如何连线?
理想情况下,实例化Rep <A> 时没有任何变化.它应该不知道谁在听,A可能会整天被操纵而不会激活一个Rep.
但是当Rep <B>诞生时,它需要一种方式来订阅Rep <A>的事件.可能还没有Rep <A> alive,但肯定会有一个B被要求它的A,所以似乎可以启动一个Rep <A>.
在本质上,当Rep <B>被实例化时,它希望它使用Rep <A>为事件通知注册自己.我不想污染IRep <T>接口,因为这对于Repository层之外的任何人都无关紧要.其他类型的存储库可能根本不用担心这个问题.
这有意义吗?
domain-driven-design repository inversion-of-control autofac
我理解'邻近选择器'+
我想要做的是根据div两侧的类来改变元素的样式.例如:
<div class="positive">...</div>
<div class="divider"></div>
<div class="negative">...</div>
Run Code Online (Sandbox Code Playgroud)
"正面"和"负面"类具有不同的背景和分配可能会根据用户交互等进行更改.我希望div.divider根据其两侧的div类选择背景.我们有从正面到负面,从负面到正面,从位面到位面,从负面到负面等"过渡"的分频器.有更多的状态,这些只是例子.
这个想法是当JS改变div.divider两侧的div类时我想改变divider的样式(主要是背景).
这可能吗?
我对我页面上的事件管道问题感到困惑.我有一个ASP.NET UserControl,它监视一些浏览器端事件,并将它们作为UpdatePanel async-post-backs引发到服务器.我们称之为EventPump.它包括一些用于管理事件的JavaScript和服务器端控件.它很棒.
我在同一页面上有几个其他控件,彼此不了解但想订阅EventPump引发的一些事件.通常,一个控件将通过在其标记中包含该控件并对事件进行布线来订阅另一个事件.但在这种情况下会给我多个EventPump实例,这是我不想要的.
如何让多个UserControl订阅公共EventPump控件的事件?
最简单的页面来演示我的问题:
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
html, body
{
height: 100%;
overflow: hidden;
}
body
{
margin: 0;
padding: 0;
}
#container
{
background: red;
height: 100%;
overflow: hidden;
}
</style>
</head>
<body>
<div id="container"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
div-container正确地用红色填充浏览器窗口.现在将div包装在一个表单中:
<body>
<form>
<div id="container"></div>
</form>
</body>
Run Code Online (Sandbox Code Playgroud)
和div-container崩溃.为什么?什么是关于'打破''最近的祖先与高度'的表格标签?
我已经看到了大量的例子来修复IE8的z-index疯狂,但在这种情况下它们似乎都没有帮助我.
我正在设计基于UL/LI的"面包屑"布局,图形上每个面包屑可以具有3种不同背景颜色中的一种,每种颜色都有一个"倾斜的端盖".除了IE8之外,它的外观如何:

我们最初的天真但工作的实现在面包屑之间添加了非语义标记和每个可能的重叠对的图像 - 当crumb-classes改变时,有一组复杂的类和JS选择了9种组合.啊.我想尝试另一种基于伪元素的解决方案,这些伪元素将碎屑重叠到右边,这样我们就可以抛弃所有"分隔符"的东西和逻辑.
我的HTML看起来像这样:
<ul class="breadcrumbs">
<li class="positive">positive</li>
<li>default</li>
<li class="positive">positive</li>
<li class="negative">negative</li>
<li>default</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我不会用填充物和背景给你烦恼,这样就足以说每个背景都是重复的条子 - 默认(没有类)是灰色,正面是绿色,负面是红色.对于每个默认/正/负,都有一个倾斜的图像.
这是一些CSS:
ul.breadcrumbs
{
display: block;
clear: both;
position: relative;
z-index: 10;
}
ul.breadcrumbs li
{
display: block;
float: left;
position: relative;
...height,width,padding,etc.etc...
background: url(sprite-x.png) repeat-x 0 -216px;
}
ul.breadcrumbs li.negative { background-position: 0 -243px; }
ul.breadcrumbs li.positive { background-position: 0 -323px; }
Run Code Online (Sandbox Code Playgroud)
那给我带来了正确颜色的面包屑.现在对于倾斜:
ul.breadcrumbs li:after
{
content: "";
display: block;
position: absolute;
top: 0; left: 100%;
width: 24px;
height: 100%; …Run Code Online (Sandbox Code Playgroud) 我从这个问题中得到了 async/await-on-ASP.NET的各种好处.
我的理解是,异步与并行性不是一回事.因此,在Web服务器上,我想知道async/await给ASP.NET页面带来了多少好处.
是不是IIS + ASP.NET已经非常擅长为请求分配线程,如果onen页面忙于等待资源,服务器将只切换到处理另一个有工作要求的请求?
ASP.NET中可以使用有限数量的线程供ASP.NET使用 - 异步使用它们是否更有效?
正如Skeet先生在回答上述问题时指出的那样,我们不是在谈论阻止UI线程.我们已经是多线程的,并且在完成所有请求的任务之前无法完成Web响应,异步与否,对吗?
我猜它归结为:
对ASP.NET页面中的资源(例如文件或数据库请求)进行异步读取与阻止它有什么好处?
使用ASP.NET 4.5我正在尝试使用新的async/await玩具.我有一个IDataReader实现类,它包含特定于供应商的读者(如SqlDatareader).我有一个简单的ExecuteSql()方法,它同步操作,如下所示:
public IDataReader ReaderForSql(string sql)
{
var cmd = NewCommand(sql, CommandType.Text);
return DBReader.ReaderFactory(cmd.ExecuteReader());
}
Run Code Online (Sandbox Code Playgroud)
我想要的是这个的异步版本.这是我的第一次尝试:
public Task<IDataReader> ReaderForSqlAsync(string sql, CancellationToken ct)
{
var cmd = NewCommand(sql, CommandType.Text);
return cmd.ExecuteReaderAsync(ct)
.ContinueWith(t => DBReader.ReaderFactory(t.Result));
}
Run Code Online (Sandbox Code Playgroud)
我用它:
using (var r = await connection.ReaderForSqlAsync("SELECT ...", cancellationToken))
{
...
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,这在我的有限测试中效果很好.但是看了几次这个Cloud9视频之后:http://channel9.msdn.com/Events/aspConf/aspConf/Async-in-ASP-NET我对他们提出的关于以下问题的警告感到不安:
因为我将ContinuationToken传递给ExecuteReaderAsync(),所以似乎取消只是ExecuteReaderAsync()失败的另一个原因(毕竟它是SQL!)
当我尝试继续使用它时,任务的状态是什么?t.Result会阻止吗?扔?做错了什么?
我很难协调 IoC、接口和事件。让我们看看我是否可以在不写书的情况下解释这一点。
我刚刚开始使用 IoC,正在玩 Spring。我们有一个简单的数据层,它的构建早于 EF 或其他层。其中一个类是 DBProcedure,它具有一些方法和事件。
我创建了“真正的”DBProcedure 类实现的 IDBProcedure 接口。在 TDD 方式中,我希望能够将“真正的”DBProcedure 类替换为实现相同测试接口的另一个类。对我来说,这意味着 IDBProcedure 接口应该在与我的数据层不同的命名空间/项目中定义,对吗?
但是 DBProcedure 可以引发一些事件,并且这些事件提供自定义的 EventArgs 派生类。这是否意味着 EventArgs 类也需要在数据层之外定义?看起来似乎是为了让界面正常工作,但这似乎很糟糕,因为它会传播数据层?
另一方面,也许我有错误的想法 - 当我测试获取接口和事件定义时,即使我没有使用任何“真实”类,也可以包含数据层名称空间吗?
我不得不承认我一直在携带"存储库不应该返回IQueryable"横幅,因为它更难测试.我已经被回答像其他问题的影响这个和这个.
今天早上我一直在阅读ScuttGu关于ASP.NET vNext的博客,在那里他使用SelectMethod详细介绍了Model Binding,它似乎依赖于IQueryable进行分页和排序.
您认为这会迫使我们重新考虑IQueryable在存储库中扮演的角色吗?
我有一个程序,可以接收1000个主题的实时数据.它平均每秒收到5000条消息.每条消息由两个字符串,一个主题和一个消息值组成.我想保存这些字符串以及指示消息到达时间的时间戳.
我在'Core 2'硬件上使用32位Windows XP并在C#中编程.
我想将这些数据保存到1000个文件中 - 每个主题一个.我知道很多人会想告诉我将数据保存到数据库中,但我不想走这条路.
我考虑过几种方法:
1)打开1000个文件,并在数据到达时写入每个文件.我对此有两个担忧.我不知道是否可以同时打开1000个文件,我不知道这会对磁盘碎片产生什么影响.
2)写入一个文件 - 以某种方式 - 稍后处理它以生成1000个文件.
3)将其全部保存在RAM中直到当天结束,然后一次写入一个文件.我认为如果我有足够的RAM,这将很有效,尽管我可能需要移动到64位以超过2 GB的限制.
你会如何解决这个问题?
asp.net ×3
css ×3
async-await ×2
repository ×2
.net-4.5 ×1
asp.net-4.0 ×1
asynchronous ×1
autofac ×1
c# ×1
forms ×1
html ×1
iqueryable ×1
real-time ×1
task ×1
z-index ×1