Tag: .net

使用Dapper的存储库设计模式

这可能是代码审查的问题,而不是堆栈溢出。 我正在使用Dapper for MicroORM来检索并将数据保存到SQL Server 2014.我在DTO Proj中有DTO类,它代表从DB检索到的数据或保存到DB。 我正在使用存储库模式,所以在我的服务层,如果需要存储库,我使用构造函数DI注入该依赖项,然后调用存储库上的方法来完成工作。 所以我要说有2个名为CustomerService和CarService的服务。 然后,我有2个存储库,一个CustomerRepository和一个CarRepository。 我有一个接口,它定义每个存储库中的所有方法,然后定义具体的实现。 下面显示了一个示例方法(调用Stored Proc来执行DB INSERT(注意,存储过程的实际字符串变量被定义为类顶部的私有字符串): public void SaveCustomer(CustomerDTO custDTO) { using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings[“myDB”].ConnectionString)) { db.Execute(saveCustSp, custDTO, commandType: CommandType.StoredProcedure); } } 这一切都很好但我发现自己在每个存储库中的每个方法中重复使用块。 我有两个真正的问题,如下所述。 是否有一种更好的方法,我可能会以某种方式使用BaseRepository类,每个其他存储库inheritance,Base将实现数据库连接的实例化? 对于系统上的多个并发用户,这仍然可以正常工作吗? **** ****更新 根据Silas的回答,我创建了以下内容 public interface IBaseRepository { void Execute(Action query); } public class BaseRepository: IBaseRepository { public void Execute(Action […]

事件冒泡和MVP:ASP.NET

我正在努力学习MVP 它在ASP.NET中使用Web表单。 我有两个用户控件CurrentTimeView.ascx和MonthViewControl.ascx。 CurrentTimeView显示时间。 有一个文本框可以在同一个控件中添加天数。 新获得的日期称为“结果日期”。 单击按钮添加天数时,会引发一个事件“myBtnAddDaysClickedEvent”。 在MonthViewControl上,有一个标签显示“结果日期”的月份。 目前我正在为变量“monthValueToPass”设置一个样本值(因为我不知道如何正确地做到这一点)。 如何设置monthValueToPass变量的值以使其符合MVP模型? string monthValueToPass = “TEST”; monthPresenter.SetMonth(monthValueToPass); 期望是创建易于进行unit testing的MVP,并且不违反MVP架构。 注意:虽然这是一个简单的例子,但我期待使用MVP和validation机制在GridView控件中进行数据绑定的scalablt回答。 注意:可以查看完全独立的演示者吗? 注意:每个用户控件都是单独的视图 注意:同一个演示者可以有多个视图(对于不同用户的不同控件,基于他们的认可吗?) 指南 模型视图演示者 – 指南 – 完整代码 – using System; public interface ICurrentTimeView { //Property of View DateTime CurrentTime { set; } //Method of View void AttachPresenter(CurrentTimePresenter presenter); } using System; public interface IMonthView { […]

.NET FtpWebRequest是否支持隐式(FTPS)和显式(FTPES)?

我被要求支持隐式和显式FTPS(也称为FTPES)。 我们目前正在使用.NET FtpWebRequest 。 FtpWebRequest是否支持两种类型的FTPES,有什么区别? 谢谢

服务器客户端发送/接收简单文本

我有一个功课来构建一个应用程序,它将在服务器和客户端之间发送和接收简单的字符串。 我知道如何建立连接,但不知道如何发送和接收字符串。 这是我的代码: public partial class Form1 : Form { private Thread n_server; private Thread n_client; private Thread n_send_server; private TcpClient client; private TcpListener listener; private int port = 2222; private string IP = ” “; private Socket socket; public Form1() { InitializeComponent(); } private void exitToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); } public void […]

如何在WebBrowser控件上使用DrawToBitmap修复不透明度错误?

根据以下链接和我的控制台应用程序, DrawToBitmap方法不尊重不透明度。 certificate链接: http : //social.msdn.microsoft.com/Forums/vstudio/en-US/e9704309-0c52-442d-80e0-2f8393dcd313/webbrowser-opacity-problem- 我的HTML代码: http : //fiddle.jshell.net/L37TC/ ffff HIDDEN TEXT! SomeText 我的C#控制台代码: var bmp = new Bitmap(640,480, PixelFormat::Format32bppArgb) var web = (System.Windows.Forms.Control)sender; web.DrawToBitmap(bmp, Rectangle(0, 0, 640,480)); 所以我正在寻找替代的.NET内置解决方案( 没有CEF,Awesomium,或任何扩展请 )只是.NET的内置function来修复错误或替代解决方案,以在我的控制台中截取Web URL的屏幕截图应用。 如果我将WebBrowser窗口显示给我的客户端并使用CopyFromScreen ,则不会显示不透明度并且不显示HIDDEN TEXT ,我怎么不想让WebBrowser窗口对桌面屏幕可见。 我正在寻找一个内置的解决方案,可以在没有HIDDEN TEXT的问题中从已发布的U​​RL中截取屏幕截图。 换句话说,是一种尊重opacity的解决方案。 EDIT1:我的Bitmap class所有像素(.NET类不是BMP格式)的alpha值为255.所以问题不在于文件格式。 我尝试过PNG和任何其他.NET支持的格式。 完整的源代码(控制台模板,需要添加对System.Drawing和System.Windows.Forms引用 class Program { static System.Windows.Forms.WebBrowser w = new System.Windows.Forms.WebBrowser(); [STAThread] static […]

如何在另一个进程使用文件时复制该文件

是否可以同时复制另一个进程正在使用的文件? 我问,因为当我尝试使用以下代码复制文件时,会引发exception: System.IO.File.Copy(s, destFile, true); 提出的例外是: 该进程无法访问文件’D:\ temp \ 1000000045.zip’,因为它正由另一个进程使用。 我不想创建新文件,我只想复制或删除它。 这可能吗?

将DataTable转换为通用List?

public static IList ConvertTo(DataTable table) { if (table == null) { return null; } List rows = new List(); foreach (DataRow row in table.Rows) { rows.Add(row); } return ConvertTo(rows); } public static T ConvertItem(DataTable table) { T obj = default(T); if (table != null && table.Rows.Count > 0) { obj = CreateItem(table.Rows[0]); } return obj; […]

如何用c#制作两个透明层?

有三个连续的图层, picturebox1(.jpg) -> label1 -> picturebox2(.png transparent)我想要的是使label1和pictrurebox2对pict​​urebox1透明,这样label1可以通过picturebox2看到但它无法正常工作.. public Form1() { InitializeComponent(); label1.Parent = pictureBox1; label1.BackColor = Color.Transparent; pictureBox2.Parent = pictureBox1; pictureBox2.BackColor = Color.Transparent; picturebox2.BringToFront(); } 所以请帮助我

将console.writeline从Windows应用程序重定向到字符串

我有一个用C#编写的外部dll,我从程序集文档中研究了它使用Console.WriteLine将其调试消息写入控制台。 这个DLL在我与应用程序的UI交互时写入控制台,所以我不直接进行DLL调用,但我会捕获所有控制台输出,所以我想我必须在表单加载中初始化,然后在以后获取捕获的文本。 我想将所有输出重定向到字符串变量。 我试过Console.SetOut ,但它用于重定向到字符串并不容易。

在C#中暂停进程

如何在C#中暂停整个过程(如我单击Suspend时的Process Explorer)。 我正在使用Process.Start启动Process,并且在某个事件上,我想暂停该进程以便能够对其“快照”进行一些调查。