除了对象实例,我还能用什么可传递的值来访问多个函数?
我正在学习C#,我正在寻找一个解决问题的解决方案,该问题可能是由不良架构引起的,不会影响现实生活. 我想通过具有多个功能并且不需要实例化的"某种东西"(不一定是一个类),例如,我想在字典中拥有一个带有小时和任务的课程,所以,例如,在12:00我希望课程"午餐",但是午餐可能取决于其他变量,因此我有一个dict条目检查{12,午餐任务},午餐任务是子类/实施/实施/派生''任务'这样,我们可以安全地通过它并调用像weedass一样的东西. i虽然关于使用字典(int,system.type),但无法正常工作,但我也尝试了静态,但据我所知,它们不能分类,并且代表适用于单个功能.我只想传递具有可以直接访问的函数而无需实例化的功能的东西.我知道的一个解决方案可以起作用,但我发现非常不高的解决方案是要拥有一个静态类,其中包括所有不同任务的实例. 我不知道有任何更好的方法来实现这样的基本功能,也许我做的一切都非常错误.因此,如果你们可以将我指向正确的方向,我将非常感激.预先感谢您.
6 2024-04-26
编程技术问答社区
我错了什么,是DI还是设计,我应该如何去做?
要简短简短,我目前正在写的应用程序应该模仿用户登录的当前的应用程序. 这是管理信息查询的应用程序. 由于NHibernate.ISessionFactory不允许在其连接字符串的级别上更灵活,所以我需要使用当前用户凭据动态构建连接. (顺便说一句,我不是在抱怨NH,我在每个项目上都使用的很棒.) 所以,我需要在启动时强制身份验证.许多依赖项可能受到启动的限制,而不是数据访问模块的依赖项,因为连接字符串是用户身份验证后需要加载的数据访问模块. 如果强制验证; AuthenticationPresenter告诉MembershipService使用提供的凭据; ; 关于成功的身份验证,AuthetnicationUser类的实例保留在MembershipService中,MembershipService又在singleton范围内绑定; SessionFactoryProvider取决于我的MembershipService.CurrentUser属性来
12 2024-04-26
编程技术问答社区
业务逻辑层-获取当前用户
我有一个业务逻辑层和2个使用此功能的应用程序,一个MVC UI和一个Web API项目. 我的类中的属性之一是创建和更新的,该属性应保留用户ID. public Nullable CreatedTS { get; set; } public string CreatedBy { get; set; } public Nullable UpdatedTS { get; set; } public string UpdatedBy { get; set; } 鉴于BLL有多个消费者捕获用户ID的最佳方法是什么? a) - 使用Environment.UserName? 将其设置在BLL中 b) - 要求客户设置它并使用模型数据注释使此必需 c) - 要求客户将其传递到BLL中的任何创建或更新方法中. 解决方案 如果您在MVC和WebAPI中都使用Form
2 2024-04-26
编程技术问答社区
在ASP.NET中使用一个页面来添加和编辑一个项目
我认为这里的问题不清楚. 我的系统中有19种类型的项目.而且我有19页,每个页都允许我添加一个特定类型的新项目. "添加新项目"页面和"编辑现有项目"页面,彼此非常相似.我需要隐藏/显示几个控件. 所以我认为我会使用QueryString来定义我们将如何使用该页面,如果新事物将保持不变,如果它用于"编辑",那么我将更改a的文本属性几个标签并显示一些额外的文本框和下拉列表. 我可以通过多种方式做到这一点,但这将是一团糟.我希望有人可以在我的良好设计和建筑中提出一种方法来做到这一点. 感谢您的时间=) 解决方案 1-声明页面或类型的Instancestate属性.如果该页面适用于该页面,则将其读取并将其值写入ViewState变量. 2-使用枚举来声明此属性的可能值.您可以向此属性声明许多价值,例如(New,OneDit,Onread). 3-声明其他一些布尔属性,以帮助您轻松自定义布局(instanceisnew,instanceisonR
0 2024-04-26
编程技术问答社区
如何使用NHibernate组织数据库层
要关注这里的问题,我们可以说我有一个数据库层和一个应用程序层.因此,要使应用程序访问数据库,我必须通过数据库层(当然). 现在,我想使用linq编写查询.我可以在这里走两条不同的路径.一种方法 [a] 将是在dblayer中创建大约300个单独的功能,然后从应用程序中调用它们(例如GetAllUsers()). 或 [b] dblayer或多或少只能提供dbcontext,然后我可以从应用程序层运行linq查询(DBContext.GetAll().Where(x => x...). 我认为[b]路径会更具吸引力,或者至少不那么烦人,因为它不会充满小功能.但是你会说什么? 但是,[b]路径的问题是,如果我可以避免它,我不想在应用程序中提到NHIBERNATE,但是我似乎无法访问NHIBERNATE功能的LINQ不参考它.有很好的解决方案吗? 解决方案 选项A带有提及的内容,您不需要创建300个函数,您需要根据应用需要创建尽可能多的功能.并且某
0 2024-04-25
编程技术问答社区
将对象(图像)转换为另一个对象(字节)的三层(3层)。
转换可以在第一层(UI)中进行? 解决方案 对于此类操作,我个人在project namespace(myProjectNamespace.Utils)下个人创建了 utils class/namespace. A ststic类带有public static的成员用于转换,格式,计算... 将此类放入BLL(业务逻辑层)中,大多数时候,有时您需要不同的Utils对不同的层. 其他解决方案 假设图像是输入 - 输入通常通过: 进入系统 前端接口/UI. 一个后端接口(服务). API调用. 如果输入特定于 - 说UI-,则表明这是UI特定的东西,应该坐在那里. 相同的规则/原理适用于其他输入"通道". 如果被调用的API在BL中,那就是它可能位置的位置. yousefvand来自(我同意)的地方是,如果多个组件正在使用它,那么它可能是放入一些可重复使用库的OSRT的好候选人. 所以... 转换可以在第一层(UI)中进行?
0 2024-04-25
编程技术问答社区
asp.net mvc分层应用,我的理解对吗?
我已经阅读了很多我在Internet上可以找到的ASP.NET MVC分层应用程序.现在是时候应用我学到的东西了.请告诉我我是否做对了.示例代码很棒:D 这只是一个简单的分层应用程序.这里, .Data -- DataAccess (contains repo, interfaces and dbcontext) -- Mappings (mapping to models using fluent api) -- Migrations (schema migration) -- Filters (pipe and filter) - Product.cs - Customer.cs - Order.cs .Service (consumes the interfaces and implementation) -
4 2024-04-25
编程技术问答社区
如何在.NET中对服务的工作负载进行平衡
我正在考虑使用面向服务的体系结构(SOA)构建应用程序. 这种体系结构并不像微服务解决方案(我认为)那样复杂而混乱,但是我面临着类似的设计问题.想象一下,我有Servicea类型的服务,可以将作品发送到Type serviceb的服务.我想,如果我使用队列,那么负载平衡就不会成为问题(因为消费者会从队列中拿走他们可以处理的东西).但是,队列在代码中倾向于产生一些不良的异步,这些异步需要额外的修复.因此,使用C#的高效和惊人async/await功能,我更倾向于在服务之间使用HTTP调用.但这会产生共享工作量和检测饱和或死亡的服务的问题. 所以我的问题是: 是否有一个队列支持某种async/await功能,并且像HTTP调用一样函数,它返回了您需要的结果,而不是在无法继续原始执行流的某些回调中? 使用HTTP时,如何使服务与检测不适合新作业的节点之间的流量负载?我的意思是,我可能可以从头开始设计一些东西,但是到现在为止,应该有一些标准的方式,图书馆或框架.我在网上找到的
6 2024-04-24
编程技术问答社区
长的继承层次
我有很长的阶级继承层次结构.例如: -MyAbstractObject --MyAbstractUiObject ---MyAbstractTable -----MyAbstractPageableTable -------MyAbstractScrollableTable ---------MyAbstractStateblaTable 等... 我在Code complete上读到理想的继承深处是3.有时它可以使继承深7-9.但是我的继承深度11! 我如何改变建筑?什么设计模式适用于我的情况?不好的是,我可以在继承层次结构中更改MyAbstractPageableTable和MyAbstractScrollableTable的位置.这两个类不混合在一起,因为我的目标是单一的责任.我也想为用户提供不同的接口(API) 解决方案 通常最好使用策略模式,而不是为每个用例创建一个子类.但是很难给出任何艰难的建议,因为这取决于情况. 在您的示例中,我猜您可以
2 2024-04-24
编程技术问答社区
为应用程序提供适当的.NET DLL结构
...如果有这样的事情.这是.NET应用程序中构造DLL/参考的两种方法的图像:.该应用程序可以是一个网站(在这种情况下为)或Winform.每个盒子代表DLL.对于Winform应用,只需将" WebControls"替换为" WinformComponents". 第一个(顶)图像是我喜欢的.您可能需要扩展"一些基本网络控件"并直接使用其他控制.第二张图像使您通过接口扩展任何Web控件.对我来说,这似乎过于杀伤,因为您可能只想在没有修改的情况下使用已经存在的东西.哪个更好,哪些优点/缺点是什么? 第一个图像将最低的通用构造(例外,文件,常数等)放入一个common.dll中.第二张图像将应用程序业务逻辑和常见的一个dll放在一个DLL中.哪个更好,每个Apporach的优点/缺点是什么? 解决方案 有很多参考通常是不好的,因为加载DLL的成本是不可扣的.也许不是那么优雅,但是更少的模块可以改善您的性能.通常,您必须在整个模块化的优雅与表演的严厉现实之间找到平衡.像
0 2024-04-24
编程技术问答社区
基于组件的架构: 在运行时替换掉一个组件
在运行时更换组件是一个好主意吗? 我可以遇到什么问题? 原始问题: structureMap-在Runtime 在网络和非WEB应用程序中替换运行时替换程序集有什么区别? 解决方案 不同的是,每次您更新DLL时,IIS都会创建一个新的影子副本.因此,当您添加新的DLL时,您会自动获得新的应用程序. winforms等对您来说并不能为您带来魔力,这就是为什么它不起作用. 其他解决方案 如果与该汇编相反的代码在单独的AppDomain中运行,并且您在执行操作之前关闭AppDomain,则您应该没有问题.
8 2024-04-24
编程技术问答社区
在C#中使用被引用项目所引用的类型
我是将应用程序分为多个解决方案的新手(换句话说,我刚刚进入现实世界),我的情况将UI从UI完全分开为单独的项目.我跌倒的地方是我的胶水代码. 作为一个简单的例子. 项目汽车参考项目包含门,收音机等 项目车库参考项目汽车,但需要使用无线电. 我需要在车库项目中添加对无线电项目的参考吗? 解决方案 是的,您需要对两个库添加参考.通常,您需要向所有库的库添加参考,并直接使用您的 使用;通过声明这些类型的变量,使用具有参数或返回类型的方法,从它们继承,等等. . 其他解决方案 取决于在车库内,您是否直接 引用项目无线电中定义的类型.如果是,则需要创建一个参考.如果您唯一使用这些无线电类型的用法是在 car 组装中,则汽车类型在车库中使用的事实 not 要求您在车库中声明对无线电的引用(如下所述编辑注释中除外). 编辑(根据@Pavel的评论):还有其他场景/条件您需要参考另一个组件: 如果您使用的是从第三个组件中定义的类型(或实现界面)派生的引用组件中
0 2024-04-24
编程技术问答社区
隔离通用函数中的通用代码
我在一堂课中有两个功能.唯一的区别是函数的参数(一个用x弹奏,另一个弹药)和用星号标记的线. 有什么方法可以用星号隔离这两条线或具有共同的功能,或者重写功能,以使尝试,捕捉块和最后几个语句仅编写一次? 这里的目的是最大程度地减少代码重复. public T Do(Func something) { try { var manager = CoreInfrastructure.GetManager(Prefix, Config.Param1, Config.Param2); //****** if (manager != null) return something(manager); LoggingHandler.LogWarning(LogTitle, $"manager ({this}) is null."); } catch (MyException exp)
0 2024-04-24
编程技术问答社区
在MVC 4中为3层架构配置Ninject
目前,我正在建立一个带有2层的网站. Web UI:这是一个MVC 4项目,用于与用户互动 数据访问:这是一个C#库.该层负责与数据库进行交互. 我正在使用ninject进行依赖注入.到目前为止,没关系.但是现在,我想在Web UI和Data Access (称为业务逻辑)之间插入一个新层.因此,架构将是: Web UI:使用业务逻辑中的接口. 业务逻辑:使用来自数据访问的接口. 数据访问:保持不变. 我的问题是,我应该如何在Web UI和业务逻辑中配置我的ninject以实现我想要的东西?这是我的源代码: 数据访问层: 接口ihotelrepository.cs public interface IHotelRepository { IQueryable Hotels { get; } } 混凝土类Hotelrepository.cs public class HotelRepository : IHote
4 2024-04-23
编程技术问答社区
如何避免在紧密绑定的用户控件中的属性在设计时被重置?
我的标签上有usercontrol'a',此属性: /// /// Gets or Sets the text of the control /// [ Browsable(true), EditorBrowsable(EditorBrowsableState.Always), Category("Appearance") ] public override string Text { get { return uxLabel.Text; } set { uxLabel.Text = value; } } i然后有usercontrol'b',其中有usercontrol'a',然后将文本属性设置为设计师中的"我的示例标签"
2 2024-04-23
编程技术问答社区
API设计。暴露XML或对象 #2
我最近问了这个问题: exp对象 - 感谢所有的回复. 澄清的一点. 始终将远程访问API(即作为服务),很可能是通过WebServices或WCF访问. 我同意,从理论上讲,作为输入/输出是右的强烈键入API.但是,我觉得揭露XML仍然有一个论点.如我所见,使用XML的原因是: 业务规则可以由schematron的业务分析师撰写. 该接口键弱键入,但是一旦被称为数据,就可以根据数据和业务规则进行验证. 该服务的实现将更简单.不需要创建域对象模型. XML模式已经定义(我们有一个架构的数据字典). 使用Web服务技术意味着基于XML的API不需要在添加新车"类型"时进行更改,例如 void AddNewCar( string newCarXml ) string[] GetCars( /* some query conditions */ ) 如果我们使用了基于对象的API,则添加新类型需要一种新的查询方法来定义可能返回的可能的派生类
0 2024-04-23
编程技术问答社区
如何使用.NET 6在干净体系结构中注册基础架构层依赖项?
我正在使用.NET 6中的清洁体系结构实施一个项目.根据干净的体系结构原理,我们不应在Web API中参考基础结构层(演示层),我们只能在Web API中访问应用程序层. 那么,如何在不违反干净架构原理的情况下注册基础架构层的依赖关系?我在基础架构层中创建了以下扩展方法来注册依赖项: namespace JwtWithIdentityDemo.Infrastructure.IoC { public static class RegisterInfrastructure { public static void AddInfrastructure(this IServiceCollection services, IConfiguration configuration) { services.Configure(configuration.GetSectio
0 2024-04-23
编程技术问答社区
插座编程设计问题
我(第一次)在C#中使用插座编程,我正在制作Skype(视频呼叫,IM,文件共享,屏幕共享),我有几个问题... 1)套筒应该如何真正工作?在客户端,我有一个时循环,这效果可以使插座打开,这是正确的吗?还是我应该在每次发送/接收后关闭插座(IM使用BeginSend()和BeginRecieve())并创建一个新的套接字?建立连接后,互动()被调用.我的代码: private static void interact() { try { while (true) { receive(client); send(client); } } catch (Exception e) { Logging.errorDisconnect(cli
6 2024-04-23
编程技术问答社区
ASP MVC5身份用户抽象
我想用默认身份2提供商构建N-Tire Web应用程序.因此,我的数据层包含带有模型定义的纯C#类,而没有任何外部依赖性.但是,如果不添加ASPNET. 我试图建立一个用户类的接口: public interface ISystemUser { string Id { get; set; } string Title { get; set; } } public class Place { public int Id { get; set; } public string Address { get; set; } public ISystemUser User { get; set; } } 和基础架构层中的实现: public class ApplicationUser : IdentityUser, ISystemUser { public string Title { get; set; } } public
6 2024-04-23
编程技术问答社区
我如何创建一个插件机制,只在插件可用时才调用函数?
对不起,如果我不够清楚,我很难写这个问题. 我下载了一个开源软件.我想扩展功能,因此我想创建模块,以封装这些模块的功能为.dll文件. 我想将一个完全独立于另一个独立:如果我在配置文件中设置了一个键,并且如果在文件夹上存在dll,则应加载插件. 问题是:如何动态呼叫插件(仅应用插件的调用)? 如果我直接引用插件类,则必须引用插件DLL,但是我希望能够在没有插件的情况下运行核心软件.是否有任何设计模式或其他机制可以使我仅在应用插件并且仍然可以在没有插件的情况下运行核心软件时加载和使用DLL? 解决方案 有多种方法可以实现这一目标,我将在这里描述一个简单的解决方案. 制作每个插件必须实现的通用接口才能与核心应用程序集成.这是一个示例: // Interface which plugins must implement public interface IPlugin { void DoSomething(int Data); } // Custom
2 2024-04-23
编程技术问答社区