我正在学习编写lambda表达式,我需要有关如何从列表中删除不在另一个列表中的所有元素的帮助.
var list = new List<int> {1, 2, 2, 4, 5};
var list2 = new List<int> { 4, 5 };
// Remove all list items not in List2
// new List Should contain {4,5}
// The lambda expression is the Predicate.
list.RemoveAll(item => item. /*solution expression here*/ );
// Display results.
foreach (int i in list)
{
Console.WriteLine(i);
}
Run Code Online (Sandbox Code Playgroud) 以前曾问过类似的问题,但不完全相同(除非我错过了)
我想通过我的服务,域,域事件,域事件处理程序传递IUserInfo类实例...
什么是最好的方法.
我是不是该
使用IoC通过将其注册到Httpcontext.Current.session ["CurrentUser"]的实例来注入它;
将数据添加到当前线程.
任何其他方式
我被困在域事件处理程序中,我想使用这些数据进行审计以及发送电子邮件.
我希望能够在我的应用程序中的任何位置使用CurrentUser信息.
随着线程被合并的线程,我怀疑线程的重用是否会重置数据.如果没有,请告诉我如何使用线程传递IUser实例.
问候,
损伤
CQRS让我进入思维模式.我正在尝试用CQRS创意开始一个新项目.我喜欢的主要内容是
1)Query和Command的分离.我们的域查询一直是个问题.
2)使用事件存储进行审计 - 我不会将其用于重播 - 至少现在不是.
我很擅长查询方面,我仍然对域事件有一些疑问
如果一个命令导致多个聚合根(例如订单和订单详细信息)的更新,我将把它们限定在UnitofWork(事务性)下.现在,每个域负责在更改发生到其状态时发布事件.
让我们说该命令更改3 orderDetail记录.每个OrderDetail将发布2个事件.最后我们有6个活动.
a)如果我在对域对象进行更改(但未提交事务)后立即发布事件,如何撤消已发布的事件(并且可能已被订阅者使用)
b)如果OrderDetail中的更改要求在Order Aggregate Root中进行某些更改,那么
i)我应该通过处理OrderDetail Aggregate发布的事件来进行这些更改吗?对于前者 让我们说两个订单明细被删除.这使订单状态从"首选"变为"不首选".ii)如果事件错误并且没有更新订单状态怎么办 - 如果订单仍然是首选,那么它将在2天内发货.
添加另一个问题
c)"域事件是所有应用程序状态更改的来源"还是"所有应用程序状态更改的结果"
先感谢您,
三月
我试图绕过MassTransit和RabbitMQ并排队(第1天)
我的问题是"消费者是否有必要排队在MT工作.我问的原因是因为我首先创建了Domain和Producer,但我没有在RabbitMQ管理窗口中看到任何排队的项目."
创建消费者队列后,我可以看到消息排队.
根据我的理解,Producer永远不会意识到消费者,那么为什么MassTransit需要消费者队列来启动消息发布?
制片人
using MassTransit;
namespace Producer
{
class Program
{
static void Main(string[] args)
{
Bus.Initialize(sbc =>
{
sbc.UseRabbitMq(); //1
sbc.UseControlBus();
sbc.EnableMessageTracing();
sbc.EnableRemoteIntrospection();
sbc.ReceiveFrom("rabbitmq://localhost/MT.Producer");
sbc.UseControlBus();
});
Bus.Instance.Publish(new NewOrderMessage { OrderName = "Hello World" });
}
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MassTransit;
using Topshelf;
namespace Consumer
{
class Program
{
static void Main(string[] args)
{
Bus.Initialize(sbc =>
{
sbc.UseRabbitMq();
sbc.UseRabbitMqRouting();
sbc.ReceiveFrom("rabbitmq://localhost/MT.ConsumerService");
});
var cfg = HostFactory.New(c =>
{
c.SetServiceName("MT.ConsumerService"); …Run Code Online (Sandbox Code Playgroud) 我有一个使用ViewModel的表单视图.Action"New"呈现新视图.提交此表单后,我将信息发送回"添加"操作.
如果DB上的所有操作都成功,我想刷新视图.我从"添加"操作中创建了一个新的viewmodel实例,并返回View("New",viewModel).这不会刷新我的观点.所有旧值(已提交)仍保留在视图中.有没有办法刷新页面没有RedirectToAction方法.
我在另一篇文章中读到不应该使用ModelState.Clear,因为它可能会产生不良结果.
谢谢,
损伤
编辑1 - 添加代码
New
public ActionResult New(string id)
{
var sysId= new Guid(id);
.......
........
string Details = pDto.Name + "(" + pDto.Code + ")";
var vm= new ViewModel(id);
vm.Details = Details;
return View(vm);
}
public ActionResult Add(ViewModel vm)
{
ViewModel vm= vm;
if (ModelState.IsValid)
{
var dto= _qRepository.GetFeaturesBy(viewModel.Code);
if (dto!= null)
{
ModelState.AddModelError("Code", "Code is already in Use.");
return View("New", viewModel);
}
_productService.AddFeature(..........);
// ModelState.Clear(); -- this works
vm= new ViewModel(vm.pId) { Message = …Run Code Online (Sandbox Code Playgroud) 我正忙着在最近的一个项目中实现事件.
我已经验证了structuremap正在扫描正确的汇编和添加EventHandler
Scan(cfg =>
{
cfg.TheCallingAssembly();
cfg.IncludeNamespace("ABC.EventHandler");
cfg.ConnectImplementationsToTypesClosing(typeof(IHandle<>));
});
public class StructureMapEventDispatcher : IEventDispatcher
{
public void Dispatch<TEvent>(TEvent eventToDispatch) where TEvent : IDomainEvent
{
foreach (var handler in ObjectFactory.GetAllInstances<IHandle<TEvent>>())
{
handler.Handle(eventToDispatch);
}
}
}
Run Code Online (Sandbox Code Playgroud)
之前我曾经从域中触发事件.有点像Dispatcher.RaiseEvent(new [domainEvent class](x,y,z));
而事件将被激起.我不得不改变设计,我现在收集集合中的collectiong事件
_domainEvents = new Collection<IDomainEvent>();
Run Code Online (Sandbox Code Playgroud)
我将域保存到存储库后再将其提升
public static void Raise(ICollection<IDomainEvent> domainEvents)
{
foreach (var domainEvent in domainEvents)
{
DomainEventDispatcher.Raise(domainEvent);
}
}
Run Code Online (Sandbox Code Playgroud)
但现在
ObjectFactory.GetAllInstances<IHandle<TEvent>>() 返回0个处理程序计数
如果我注意的话
ObjectFactory.GetAllInstances<IHandle<DomainEventClass>>() 它正确返回处理程序集合(目前我有2个,它显示2个计数)
...我假设这与事件被提出类型IDomainEvent 而不是实际类型有关,这使得结构图很难解决它.
我该如何解决这个问题?
问候,
三月
-
编辑1:
我已经确定struturemap容器包含从程序集扫描的所有事件处理程序.
编辑2
我不知道如何让这个问题引起更多关注.我正在为获得所需结果的解决方案添加赏金.如果问题不明确,请询问.
基本上我想ObjectFactory.GetAllInstances<IHandle<TEvent>>()返回处理程序TEvent …
我不是很擅长Jquery.当用户选择自动完成项时,我正在尝试将ID添加到隐藏字段
HTML
<input type="hidden" value="" name="CountryId" id="CountryId">
Run Code Online (Sandbox Code Playgroud)
使用Javascript
$(document).ready(function () {
$("#Country").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Address.mvc/CountryList", type: "POST", dataType: "json",
data: { searchText: request.term, maxResults: 10 },
success: function (data) {
response($.map(data, function (item) {
return { label: item.Value, value: item.Value, id: item.Key }
}))
}
})
},
select: function (event, ui) {
alert(ui.item ? ("You picked '" + ui.item.label + "' with an ID of " + ui.item.id) : "Nothing selected, input was " + …Run Code Online (Sandbox Code Playgroud) 我将我的值Object Item作为组件映射到下面的映射配置
{
Table("Product");
Not.LazyLoad();
Id(x => x.Id, "id");
Map(x => x.Number, "number");
Map(x => x.Name, "name");
Map(x => x.Description, "description");
Map(x => x.Status, "status");
HasMany(x => x.ItemLines).Component(
m =>
{
m.Map(x => x.ItemId, "itemid");
m.Map(x => x.Qty, "quantity");
}).Table("productitems").KeyColumn("itemid");
}
Class structure
public class ItemLine
{
public Product Product { get; set; }
public Guid ItemId { get; set; }
public int Qty { get; set; }
public ItemLine()
{
}
public ItemLine(Product product, Guid itemId, int qty)
{ …Run Code Online (Sandbox Code Playgroud) nhibernate nhibernate-mapping fluent-nhibernate value-objects
c# ×3
.net ×1
asp.net-mvc ×1
cqrs ×1
jquery ×1
lambda ×1
masstransit ×1
nhibernate ×1
structuremap ×1
view ×1