草庐IT

c# - 缓存来自 [n async] 工厂方法的结果,前提是它不抛出

更新:在@usr指出我错误地假设Lazy后进行了大量修改的默认线程安全模式是LazyThreadSafetyMode.PublicationOnly...我想通过async延迟计算一个值工厂方法(即它返回Task)并在成功时将其缓存。在异常(exception)情况下,我希望我可以使用它。然而,我不想成为theexceptioncachingbehavior的牺牲品。那Lazy处于默认模式(LazyThreadSafetyMode.ExecutionAndPublication)Exceptioncaching:Whenyouusefactorymethods,exceptionsar

c# - 工厂车间模拟

我想创建一个工厂车间的模拟,我正在寻找有关如何执行此操作的想法。到目前为止,我的想法是:•工厂由一系列流程组成,这些流程中有些是串联的,有些是并行的。每个进程都会与它的上游和下游以及并行邻居进行通信,让他们知道它的吞吐量•每个进程都有自己的基本属性,如最大吞吐量、吞吐量导致的维护成本显然我还没有完全想清楚,但我希望有人能给我一些想法或者一个在线资源的链接更新:本项目仅供自己娱乐,或许也能学到一点东西。我不是程序员,编程对我来说只是一种爱好。我决定用C#编写它。 最佳答案 准确模拟整个工厂是一项艰巨的工作。首先你需要弄清楚:你为什么要

c# - 为什么不将所有服务类都集中到一个工厂方法中(而不是注入(inject)接口(interface))?

我们正在构建一个ASP.NET项目,并将我们所有的业务逻辑封装在服务类中。有些在域对象中,但通常那些是相当贫乏的(由于我们正在使用的ORM,这不会改变)。为了更好地启用单元测试,我们为每个服务定义接口(interface)并利用D.I.。这里有几个接口(interface):IEmployeeServiceIDepartmentServiceIOrderService...这些服务中的所有方法基本上都是任务组,类不包含私有(private)成员变量(除了对依赖服务的引用)。在我们担心单元测试之前,我们只是将所有这些类声明为静态的,并让它们直接相互调用。现在,如果服务依赖于其他服务,我们

c# - IDisposable 的享元和工厂问题

我似乎陷入了享元模式的困境。首先,假设我有一个一次性类型DisposableFiddle和一个工厂FiddleFactory:publicinterfaceDisposableFiddle:IDisposable{//ImplementsIDisposable}publicclassFiddleFactory{publicDisposableFiddleCreateFiddle(SomethingThatDifferentiatesFiddless){//returnsanewlycreatedfiddle.}}然后,在我看来,对于FiddleFactory的客户来说,工厂并不声称拥有

c# - 使用静态工厂 Func<T> 为 ASP.NET 应用程序创建 "Ambient Context"(UserContext)

我发现几乎每个类(Controller、View、HTML帮助程序、服务等)我都需要当前登录的用户数据。所以我考虑创建一个“环境上下文”而不是直接注入(inject)IUserService或用户。我的方法看起来像那样。publicclassBootstrapper{publicvoidBoot(){varcontainer=newContainer();//thecalltoIUserService.GetUseriscachedperHttprequest//byusingadynamicproxycachingmechanism,thatalsohandlescaseswhere

c# - 用工厂模式保存数据?

我越来越熟悉工厂模式(以及策略模式)以及该模式可以带来的巨大好处。但是,我一直在为以下情况而苦苦挣扎:以前,我会做类似下面的事情,其中​​有一个管理器类可以构建和保存汽车。这里没有依赖注入(inject),是一个糟糕的实现,尤其是在尝试进行单元测试时。publicclassCarManager{publicstaticCarGetCarFromDatabase(intcarId){returnnewCar();}publicstaticvoidSaveCar(Carcar){}}我现在明白了我如何拥有不同的工厂为我制造汽车,无论是来自数据库还是来自任何地方!这很棒!所以,这是我的问题:

C# 任务工厂超时

我必须在一个线程中执行一个长进程操作,然后将结果返回给一个函数来继续。这是我的代码:Task.Factory.StartNew(()=>{try{//longoperationwhichreturnnewProductEventArgswithalistofproduct}catch(Exceptione){returnnewProductEventArgs(){E=e};}}).ContinueWith((x)=>handleResult(x.Result),TaskScheduler.FromCurrentSynchronizationContext());问题实际上是我没有超时。

c# - 我可以使用类型化工厂设施返回基于(枚举)参数的实现吗?

不确定这是否可能。我需要根据枚举值返回正确的服务实现。所以手工编码的实现看起来像这样:publicenumMyEnum{One,Two}publicclassMyFactory{publicITypeIWantToCreateCreate(MyEnumtype){switch(type){caseMyEnum.OnereturnnewTypeIWantToCreate1();break;caseMyEnum.TworeturnnewTypeIWantToCreate2();break;default:returnnull;}}}返回的实现具有额外的依赖项,需要通过容器注入(inject

c# - 我的 DDD 工厂类中应该有哪些方法?

我很难理解我的工厂类在我的DDD项目中应该做什么。是的,工厂应该用于创建对象,但它究竟应该做什么。考虑以下工厂类:publicclassProductFactory{privatestaticIProductRepository_repository;publicstaticProductCreateProduct(){returnnewProduct();}publicstaticProductCreateProduct(){//Whatelsewouldgohere?}publicstaticProductGetProductById(intproductId){//Shouldi

C# 通用接口(interface)和工厂模式

我正在尝试创建一个通用接口(interface),其中一个方法的参数类型由通用定义编辑在意识到我可能通过在Factory创建方法中指定类型参数混淆了问题后,我稍微更改了问题。我所拥有的是我需要对第3方API进行的两种类型的API调用。第一个使用int类型的Id从API检索记录。第二个也从API检索记录,但Id是一个字符串(guid)。我为每种记录类型(ClientEntity和InvoiceEntity)都有一个类,它们都实现了一个通用接口(interface),我在其中传入了Id类型这是我在其中声明一个带有id参数的方法的接口(interface)publicinterfaceIGe