Tag: c#

如何检索.NET运行时生成的所有已关闭generics类型的列表?

根据MSDN文档,.NET运行时将根据需要动态生成基于generics类型定义的封闭类型。 https://msdn.microsoft.com/en-us/library/f4a6ta2h.aspx 是否可以检索与运行时生成的闭合类型相对应的System.Type实例的集合?

SQLDependency + Service Broker

我正在使用SqlDependency在某些表中的数据发生更改时获取通知。 private void subscribeBroker() { using (var conn = new SqlConnection(connString)) { conn.Open(); var cmd = new SqlCommand(“SELECT text FROM dbo.Test”); cmd.Connection = conn; var dependency = new SqlDependency(cmd); dependency.OnChange += dependency_OnChange; SqlDependency.Start(connString); cmd.ExecuteNonQuery(); } } void dependency_OnChange(object sender, SqlNotificationEventArgs e) { //Do something… subscribeBroker(); } 它有效,但我有一些问题。 1)我没有找到一种方法来获取哪些行被更改的信息。 我需要读取整个表中的所有数据,看看有什么不同。 有没有办法获得这些信息? (主要ID,或者其他)也许使用与SqlDependency不同的方法? 2)如果“某人”非常快速地改变数据怎么办? 某些更改可能不会被通知? (我关注通知和再次订阅时间之间的时间。 谢谢。

用于计算class级计数的部分语法

我需要计算正确的C#源文件中的类数。 我写了下面的语法: grammar CSharpClassGrammar; options { language=CSharp2; } @parser::namespace { CSharpClassGrammar.Generated } @lexer::namespace { CSharpClassGrammar.Generated } @header { using System; using System.Collections.Generic; } @members { private List _classCollector = new List(); public List ClassCollector { get { return _classCollector; } } } /*—————————————————————— * PARSER RULES *——————————————————————*/ csfile : class_declaration* EOF ; class_declaration : (ACCESSLEVEL […]

C#异步操作

事实上,我很难理解BeginInvoke()和EndInvoke()对。 class AsynchronousDemo { public delegate void DemoDelegate(); static void Main() { DemoDelegate d = PrintA; IAsyncResult AResult = d.BeginInvoke(Callback,null); d.EndInvoke(AResult); Console.ReadKey(true); } static void PrintA() { Console.WriteLine(“….Method in Print A Running ….”); Thread.Sleep(4000); Console.WriteLine(“….Method in Print A Completed…”); } static void Callback(IAsyncResult ar) { Console.WriteLine(“I will be finished after method A completes its execution”); […]

在C#中将ulong映射为long?

我试图将ulong映射到long(反之亦然),并将uint映射到int(反之亦然),如下所示 – 以便将值保存在带有签名类型的MS-SQL数据库中整数和大整数。 我这样做是因为我必须检查(在数据库中)一个数字(uint,ulong)是否在一堆uint / ulong范围内的哪个范围内(IPs-v4&v6;实际上ulong实际上是由uint128组成的两个ulongs)。 是否有更有效的方法来实现这一点,然后我在这里的代码: public static ulong SignedLongToUnsignedLong(long signedLongValue) { ulong backConverted = 0; // map ulong to long [ 9223372036854775808 = abs(long.MinValue) ] if (signedLongValue < 0) { // Cannot take abs from MinValue backConverted = (ulong)System.Math.Abs(signedLongValue – 1); backConverted = 9223372036854775808 – backConverted – 1; } else { backConverted = […]

已经包含了一个定义

我有一个名为Assign and的类 private int SeatNumber; public Assign(int SeatNum) { SeatNumber = SeatNum; } public int SeatNumber { get { return SeatNumber; } set { SeatNumber = value; } } 我不知道为什么我收到以下错误 类型’WindowsFormsApplication1.Assign’已包含’SeatNumber’的定义 怎么了?

为什么集合初始化程序与仅使用getter的属性一起工作?

这对我来说是非常不可预测的代码结果。 我没想到这段代码会产生这样的结果。 所以,我读了Jeffrey Richter的书(clr ia c#),这个代码有一个例子。 internal class ClassRoom { private List _students = new List(); public List Students { get { return _students; } } } ClassRoom classRoom = new ClassRoom { Students = {“Mike”, “Johny”, “Vlad”, “Stas”} }; foreach (var some in classRoom.Students) { Console.WriteLine(some); } 并且,正如你们中的一些人可以建议我们可以在控制台中看到四个名字。 所以,我的问题是: 我们如何得到我们的名字,如果他们要进入学生和分别在_学生中,因为学生不存在而没有被分配。 __________EDIT_1_______________ 我读了你的答案,谢谢你们。 但是,你知道,这是一种误解……我真的无法弄明白。 当我初始化学生时 […]

避免在C#winform的键盘快捷方式上发出警报

我正在使用Visual Studio 2012在C#中创建Winform应用程序的键盘快捷方式。我的快捷方式非常完美。 但它会发出恼人的哔哔声。 我添加了e.Handled = true; 和e.SuppressKeyPress = true; 根据许multithreading。 但它不起作用,我的winform卡住了。 我怎么能避免这个? private void textBoxSearch_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Down) { do stuff } else if (e.KeyCode == Keys.Enter) { //do stuff } e.Handled = true; e.SuppressKeyPress = true; } 我也需要一个解决方案。 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if […]

如何基于Func 将IObservable 窗口/缓冲到块中

给出一个类: class Foo { DateTime Timestamp {get; set;} } …和一个IObservable ,保证单调增加 Timestamp s,如何根据这些Timestamp s生成一个嵌入到列表中的IObservable<IList> ? 即每个IList应该有五秒钟的事件,或者其他什么。 我知道我可以使用带有TimeSpan重载的Buffer ,但我需要花时间从事件本身,而不是挂钟。 (除非有一个聪明的方法在这里提供一个IScheduler ,它使用IObservable本身作为IScheduler的来源?) 如果我尝试使用Observable.Buffer(this IObservable source, IObservable bufferBoundaries)重载如下: IObservable foos = //…; var pub = foos.Publish(); var windows = pub.Select(x => new DateTime( x.Ticks – x.Ticks % TimeSpan.FromSeconds(5).Ticks)).DistinctUntilChanged(); pub.Buffer(windows).Subscribe(x => t.Dump())); // linqpad pub.Connect(); …然后IList实例包含导致窗口关闭的项目 ,但我真的希望这个项目进入下一个窗口/缓冲区。 例如,使用时间戳[0, 1, […]

使用Response.TransmitFile使物理文件无法正常工作

我正在尝试使用Response.TransmitFile()来提示下载。 我已经阅读了关于这个问题的一些post,并根据Rick Strahl的博客http://www.west-wind.com/weblog/posts/76293.aspx找到了我的方法。 唯一的区别(我可以告诉)是我的目标是虚拟目录之外的物理文件。 这个代码是在ajaxified radgrid中调用的……我想知道response.transmitfile是否不适用于ajax调用? 这是我的代码片段: // Get the physical Path of the file string docFilePath = (string)args.AttachmentKeyValues[“DocFilePath”]; // Create New instance of FileInfo class to get the properties of the file being downloaded FileInfo file = new FileInfo(docFilePath); // Checking if file exists if (file.Exists) { Response.ClearContent(); Response.AddHeader(“Content-Disposition”, “attachment; filename=” + file.Name); Response.AddHeader(“Content-Length”, […]