.NET类及其源代码

当我编写C#(或任何.NET程序)时,我使用方法和类。 我使用的大多数代码都是从.NET类中调用方法。 是否有可能(纯粹出于好奇心)看到这些类的实际源代码? 我知道MSDN已经完整列出了类,它们的属性和方法。 但我想看看代码。

如何在C#中存在全局函数?

当在一个类中定义所有内容时,如何在C#中存在全局函数? 我正在MSDN阅读OpCodes.Call的文档,并惊讶地看到以下措辞, 元数据令牌携带足够的信息以确定调用是静态方法,实例方法,虚拟方法还是全局函数。 全球function? 它存在于C#中吗? (它绝对不是指static方法,因为它与全局函数一起明确列出)。

文本的C#Diff算法

我正在寻找一种差异算法,它将产生类似SO的编辑修订页面的结果。 我或多或少刚开始寻找,我不反对自己做,但我不需要重新发明轮子。 我将使用C#4.0。 我基本上有两个字符串,旧字符串和新字符串。 我想通过突出显示和突破来了解新增内容的变化。

为什么通过inheritance类型访问静态成员是有用的?

我很高兴C#不允许你访问静态成员,就像’他们是实例成员一样。 这避免了Java中的常见错误: Thread t = new Thread(..); t.sleep(..); //Probably doesn’t do what the programmer intended. 另一方面,它允许您通过’派生类型访问静态成员。 除了运算符(它可以让你免于编写演员表),我无法想到任何实际上有用的情况。 事实上,它积极鼓励错误,例如: // Nasty surprises ahead – won’t throw; does something unintended: // Creates a HttpWebRequest instead. var ftpRequest = FtpWebRequest.Create(@”http://www.stackoverflow.com”); // Something seriously wrong here. var areRefEqual = Dictionary.ReferenceEquals(dict1, dict2); 当我通过不熟悉的API搜索时,我个人不断地反复提出类似的错误(我记得从表达树开始;我在编辑器中点击BinaryExpression.并且想知道为什么地球上的IntelliSense提供MakeUnary作为选项)。 在我的(短视)意见中,此function: 不减少冗长; 程序员必须以某种方式指定类型名称(当访问当前类型的inheritance静态成员时,不包括运算符和大小写)。 鼓励上面提到的错误/误导性代码。 可以向程序员建议C#中的静态方法表现出某种“多态性”,而不是。 (次要)在重新编译时引入’沉默’,可能是无意的重新绑定可能性。 (国际海事组织,运营商是一个特殊情况,值得他们自己讨论。) […]

等待Task.Factory.StartNew(()=>与Task.Start;等待任务;

这两种使用等待forms之间是否有任何function差异? string x = await Task.Factory.StartNew(() => GetAnimal(“feline”)); Task myTask = new Task(() => GetAnimal(“feline”)); myTask.Start(); string z = await myTask; 具体来说,在1中调用每个操作的顺序是什么? 是StartNew被调用然后等待调用,还是等待在1中首先调用?

什么不能在此时修改此节点的逻辑子节点,因为树步行正在进行中?

我在后台工作线程的已完成方法中设置对象的DataContext。 出于某种原因,我收到一个错误说: 此时无法修改此节点的逻辑子节点,因为正在进行树步行指向Chart1.DataContext = allDates行。 树木行走的意义何在? 我已经尝试使用Dispatcher操作执行此设置,并且出现相同的错误…任何想法? 谷歌在此错误消息上没有任何结果。 代码导致这是微软Charting工具包的内部……我想知道我是否在他们的控制中发现了一个错误… 没有Dispatcher: void bg_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { ArticlesPerTimePeriodResult result = (ArticlesPerTimePeriodResult)e.Result; lvArticles.ItemsSource = result.DatesOfArticles; Chart1.DataContext = result.AllDates; } 使用Dispatcher: void bg_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { ArticlesPerTimePeriodResult result = (ArticlesPerTimePeriodResult)e.Result; lvArticles.ItemsSource = result.DatesOfArticles; Dispatcher.BeginInvoke((Action<List<KeyValuePair>>)(delegate(List<KeyValuePair> allDates) { Chart1.DataContext = allDates; }), result.AllDates); //Chart1.DataContext = result.AllDates; } 错误: System.Reflection.TargetInvocationException […]

C#Singleton,带有接受参数的构造函数

我想创建一个静态类或单例类,它接受对其构造函数中另一个对象的引用。 静态类已经出来了,但我想我可以创建一个在其构造函数中接受参数的单例。 到目前为止,我没有任何运气搞清楚或谷歌搜索语法。 这可能吗? 如果是的话,我该怎么做? 对不起,在最初的post中没有任何例子,我匆匆写了。 我觉得我的回答已经在回复中,但这里有一些关于我想做的事情的澄清: 我想创建一个特定类型的单个实例(表示Singleton),但该类型的单个实例需要保存对不同对象的引用。 例如,我可能想要创建一个Singleton“Status”类,它拥有一个StringBuilder对象和一个Draw()方法,可以调用该方法将所述StringBuilder写入屏幕。 Draw()方法需要知道我的GraphcisDevice才能绘制。 所以我想这样做: public class Status { private static Status _instance; private StringBuilder _messages; private GraphicsDevice _gDevice; private Status(string message, GraphicsDevice device) { _messages.Append(message); _gDevice = device; } // The following isn’t thread-safe // This constructor part is what I’m trying to figure out public static Status […]

在Open XML SDK中的单词书签后插入OpenXmlElement

我能够使用以下代码访问我的word文档中的书签: var res = from bm in mainPart.Document.Body.Descendants() where bm.Name == “BookmarkName” select bm; 现在我想在此书签后面插入一个段落和一个表格。 我怎么做? (示例代码将不胜感激)

使用PostAsync,HttpClient和Json从C#Metro UI客户端调用MVC4 WebAPI方法

我已经使用MVC4中的新WebAPIfunction创建了一个方法,并让它在Azure上运行。 该方法要求您发布一个包含Username和Password属性的简单LoginModel对象。 是的,我计划在经过这个减速带后再进一步确保这个:-)然后该方法以Json格式响应一个对象: 我可以使用Fiddler成功调用此方法,前提是我在请求标头中包含“Content-Type:application / json”。 它返回200,我可以进入Fiddler检查器并查看Json响应对象就好了: 然而,我在使用C#/ XAML从Windows8中的MetroUI应用程序调用此相同方法时遇到问题。 我开始在C#中使用HttpClient和新的Async概念,无论我如何格式化我的Post调用(即使明确地调用我希望Content-Type为“application / json”)Fiddler返回500错误并声明该尝试使用的是Content-Type:“text / html”。 我相信这是问题的根源: 我已经尝试了所有可以想到的东西,以便发布到这个方法并获取Json对象,这是我最近的尝试: HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(“application/json”)); HttpContent content = new StringContent(@”{ “”Username””: “”” + Username.Text + @”, “”Password””: “”” + Password.Text + @”””}”); client.PostAsync(“http://myapi.com/authentication”, content).ContinueWith(result => { var response = result.Result; response.EnsureSuccessStatusCode(); }); 这导致500错误,Content-Type设置为“text / html” 这是另一次失败的尝试: HttpClient […]

我需要实现具有inheritance的C#深层复制构造函数。 有哪些模式可供选择?

我希望在C#中实现我的类层次结构的深度复制 public Class ParentObj : ICloneable { protected int myA; public virtual Object Clone () { ParentObj newObj = new ParentObj(); newObj.myA = theObj.MyA; return newObj; } } public Class ChildObj : ParentObj { protected int myB; public override Object Clone ( ) { Parent newObj = this.base.Clone(); newObj.myB = theObj.MyB; return newObj; } } […]