关于洗刷所需的IEnumerable的扩展方法

我需要一个扩展IEnumerable的扩展方法。 它还可以使用int来指定返回的IEnumerable的大小。 更好地保持IEnumerable不变性。 我目前的IList解决方案 – public static IList Shuffle(this IList list, int size) { Random rnd = new Random(); var res = new T[size]; res[0] = list[0]; for (int i = 1; i < size; i++) { int j = rnd.Next(i); res[i] = res[j]; res[j] = list[i]; } return res; } public static IList Shuffle(this […]

读取二进制文件并使用Response.BinaryWrite()

我有一个应用程序需要从文件系统中读取PDF文件,然后将其写出给用户。 PDF为183KB,似乎完美无缺。 当我使用底部的代码时,浏览器获取一个224KB的文件,我从Acrobat Reader收到一条消息,说文件已损坏且无法修复。 这是我的代码(我也尝试过使用File.ReadAllBytes(),但我得到了相同的东西): using (FileStream fs = File.OpenRead(path)) { int length = (int)fs.Length; byte[] buffer; using (BinaryReader br = new BinaryReader(fs)) { buffer = br.ReadBytes(length); } Response.Clear(); Response.Buffer = true; Response.AddHeader(“content-disposition”, String.Format(“attachment;filename={0}”, Path.GetFileName(path))); Response.ContentType = “application/” + Path.GetExtension(path).Substring(1); Response.BinaryWrite(buffer); }

使用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 […]

将Generic 转换为Generic

我有一个基本WPF UserControl,它处理派生UserControls的一些常用function。 在任何派生的UserControl的代码隐藏中,我调用一个事件 private void SomeClick(object sender, RoutedEventArgs e) { HandleClick(sender); MyDataGrid.Items.Refresh(); } 在我的基础UserControl我做 public class BaseUserControl : UserControl { protected void HandleClick(object sender) { var vm = (BaseViewModel)DataContext; … } } 这会引发InvalidCastException,因为DataContext的类型为BaseViewModel但派生类型类似于BaseViewModel或BaseViewModel 。 我怎么能这样做?

事件冒泡和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 { […]

BigInteger到hex/十进制/八进制/二进制字符串?

在Java中,我能做到 BigInteger b = new BigInteger(500); 然后按我的喜好格式化它 b.toString(2); //binary b.toString(8); //octal b.toString(10); //decimal b.toString(16); //hexadecimal 在C#中,我可以做到 int num = int.Parse(b.ToString()); Convert.ToString(num,2) //binary Convert.ToString(num,8) //octal 但我只能用long值和较小的值来做。 是否有一些方法来打印具有指定基数的BigInteger? 我发布了这个, BigInteger Parse Octal String? ,昨天收到了如何将基本上所有字符串转换为BigInteger值的解决方案,但还没有成功输出。

.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 […]

CustomAttribute反映了html属性MVC5

希望找到一种方法,当在MVC5中使用Custom属性或者更喜欢RegularExpressionAttribute修饰模型中的属性时,html控件将它包含为控件的另一个属性。 例如 class CoolModel { [CustomHtmlAttribute(“hello”)] public string CoolValue {get;set;} } 输出… 或类似的东西。 因此,对于RegularExpressionAttribute,pattern属性将非常棒。 class CoolModel { [RegularExpressionAttribute(“/d”)] public string CoolValue {get;set;} } 输出… 我需要此输出而不启用Javascript不显眼的选项。 所以我想在某种方式中指定模型中的一些属性,这些属性可以下推到视图中。 不确定数据注释提供程序是否可以执行此任务。 不确定是否可以扩展Helper以获得此结果。 感谢帮助。

按名称在Windows窗体中查找控件

我正在开发一个应用程序,它在运行时从XML文件添加对象(基本上是Windows窗体控件)。 应用程序需要访问已添加的对象。 对象将添加到面板或组框中。 对于面板和组框,我有Panel.Controls [“object_name”]来访问对象。 这仅在将对象直接添加到同一面板上时才有用。 在我的情况下,主面板[pnlMain,我只能访问此面板]可能包含另一个面板,此面板[pnlChild]再次包含一个groupbox [gbPnlChild],groupbox包含一个按钮[button1,我想访问此按钮] 。 我有以下方法: Panel childPanel = pnlMain.Controls[“pnlChild”]; GroupBox childGP = childPanel.Controls[“gbPnlChild”]; Button buttonToAccess = childGP[“button1”]; 当父母知道时,上述方法很有用。 在我的场景中,只知道要访问的对象的名称[button1]而不是其父对象。 那么如何通过名称访问此对象,与其父对象无关? 是否有像GetObject(“objName”)或类似的方法?