Tag: c#

将字符串列表转换为单个字符串

List MyList = (List)Session[“MyList”]; MyList包含如下值: 12 34 55 23 。 我尝试使用下面的代码,但值消失了。 string Something = Convert.ToString(MyList); 我还需要用逗号(“ , ”)分隔每个值。 如何将List Mylist转换为string ?

以编程方式比较word文档

我需要比较两个办公文档,在这种情况下是两个word文档并提供差异,这有点类似于SVN中显示的内容。 不是那么大,但至少能够突出差异。 我尝试使用办公室COM DLL,并得到了这个… object fileToOpen = (object)@”D:\doc1.docx”; string fileToCompare = @”D:\doc2.docx”; WRD.Application WA = new WRD.Application(); Document wordDoc = null; wordDoc = WA.Documents.Open(ref fileToOpen, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); wordDoc.Compare(fileToCompare, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 有关如何进一步处理的任何提示? 这将是一个具有大量点击的Web应用程序。 使用office com对象是正确的方法,还是有其他我可以看的东西?

C#使用不同的用户凭据访问活动目录

我们刚刚为用户提供了一个新的用户创建应用程序。 但是,这些用户需要能够通过应用程序创建用户,即使他们自己没有创建用户的权限。 在C#中,您如何模拟其他用户才能拥有此function。 此应用程序主要使用System.DirectoryServices 。 代码段: DirectoryEntry dEntry = new DirectoryEntry(“LDAP://OU=”); DirectorySearcher dSearcher = new DirectorySearcher(dEntry); //filter just user objects dSearcher.SearchScope = SearchScope.Subtree; dSearcher.Filter = “(&(objectClass=user)(mail=” + excel_Holding_Table.Rows[i][“EmailAddress”].ToString() + “))”; dSearcher.PageSize = 1000; sResults = dSearcher.FindAll();

.NET ref参数是线程安全的,还是容易受到不安全的multithreading访问?

编辑介绍: 我们知道C#中的ref参数传递对变量的引用 ,允许在被调用的方法中更改外部变量本身。 但是引用的处理方式与C指针非常相似(通过对该参数的每次访问读取原始变量的当前内容,并在对参数进行每次修改时更改原始变量),或者被调用的方法是否依赖于对该参数的一致引用通话时间? 前者提出了一些线程安全问题。 特别是: 我在C#中编写了一个静态方法,它通过引用传递一个对象: public static void Register(ref Definition newDefinition) { … } 调用者提供一个已完成但尚未注册的Definition对象,经过一些一致性检查后,我们“注册”他们提供的定义。 但是,如果已经有一个具有相同密钥的定义,则它无法注册新密钥,而是将其引用更新为该密钥的“官方” Definition 。 我们希望这是严格的线程安全,但我想到了一个病态场景。 假设客户端(使用我们的库)以非线程安全的方式共享引用,例如使用静态成员而不是局部变量: private static Definition riskyReference = null; 如果一个线程设置riskyReference = new Definition(“key 1”); ,填写定义,并调用我们的Definition.Register(ref riskyReference); 而另一个线程也决定设置riskyReference = new Definition(“key 2”); ,我们保证在我们的Register方法中,我们正在处理的newDefinition引用不会被其他线程修改(因为对象的引用被复制并在我们返回时将被复制出来吗?),或者可以线程在执行过程中替换我们上面的对象(如果我们引用指向原始存储位置的指针???),从而打破我们的理智检查? 请注意,这与对底层对象本身的更改不同,这对于引用类型(类)当然是可能的,但可以通过该类中的适当锁定来轻松防范。 但是,我们不能保护对外部客户端变量空间本身的更改! 我们必须在方法的顶部创建我们自己的参数副本并覆盖底部的参数(例如),但这对于编译器来说似乎更有意义,因为处理的是精神错乱不安全的参考。 因此,我倾向于认为引用可以被编译器复制并复制出来,以便该方法处理对原始对象的一致引用(直到它在需要时更改自己的引用),而不管是什么发生在其他线程上的原始位置。 但是我们在文档和参考参数的讨论中找不到关于这一点的确定答案。 有人可以通过明确的引用来缓解我的担忧吗? 编辑结论: 在用multithreading代码示例(感谢Marc!)确认它并进一步思考之后,它确实是我自己所担心的非自动线程安全行为。 “ref”的一点是通过引用传递大结构而不是复制它们。 另一个原因是你可能想要设置一个变量的长期监控,并且需要传递对它的引用,这将看到变量的变化(例如,在null和活动对象之间进行更改),这是一个自动复制 – in / copy-out不允许。 […]

确保控制器在Unity中具有无参数的公共构造函数

我在控制器中遇到了这个问题: 尝试创建类型为“ * .WebMvc.Controllers.HomeController”的控制器时发生错误。 确保控制器具有无参数的公共构造函数。 找到ApiController的解决方案,但没有找到任何关于普通控制器的信息。 从头开始创建新的MVC 4项目。 HomeController.cs: public class HomeController : Controller { private IAccountingUow _uow; public HomeController(IAccountingUow uow) { _uow = uow; } UnityDependencyResoler.cs: public class UnityDependencyResolver : IDependencyResolver { private IUnityContainer _container; public UnityDependencyResolver(IUnityContainer container) { _container = container; RegisterTypes(); } public object GetService(Type serviceType) { try { return _container.Resolve(serviceType); }catch […]

为什么C#和VB有generics? 他们提供了什么好处? generics,FTW

来自维基百科 : 通用编程是一种计算机编程风格,其中算法是根据待指定的后续类型编写的,然后在需要时作为参数提供的特定类型进行实例化,并由1983年出现的Ada开创。这种方法允许编写常用function或类型,仅在使用时操作的类型集不同,从而减少重复。 generics提供了定义稍后指定的类型的能力。 您不必将项目转换为类型以使用它们,因为它们已经被键入。 为什么C#和VB有generics? 他们提供了什么好处? 使用它们有什么好处? 还有哪些其他语言也有仿制药?

CamelCase转换为友好名称,即Enum常量; 问题?

在我对这个问题的回答中 ,我提到我们使用UpperCamelCase解析来获取未使用Description属性修饰的枚举常量的描述,但它很幼稚,并且在所有情况下都不起作用。 我重温了它,这就是我想出的: var result = Regex.Replace(camelCasedString, @”(?(?<!^)[AZ][az])", @" ${a}"); result = Regex.Replace(result, @"(?[az])(?[A-Z0-9])”, @”${a} ${b}”); 第一个替换查找大写字母,后跟小写字母,EXCEPT,其中大写字母是字符串的开头(以避免必须返回和修剪),并添加前面的空格。 它处理您的基本UpperCamelCase标识符,并领导像FDICInsured这样的全高级缩写词。 第二个替换查找小写字母后跟一个大写字母或数字,并在两者之间插入一个空格。 这是为了处理特殊但常见的中间或尾随首字母缩略词或标识符中的数字(除了前导数字,通常在C风格的语言中都是禁止的)。 运行一些基本的unit testing,这两个组合正确地分离了以下所有标识符:NoDescription,HasLotsOfWords,AAANoDescription,ThisHasTheAcronymABCInTheMiddle,MyTrailingAcronymID,TheNumber3,IDo3Things,IAmAValueWithSingleLetterWords和Basic(没有添加任何空格)。 因此,我首先发布此信息,与其他可能认为有用的人分享,然后再问两个问题: 任何人都会看到一个符合常见的CamelCase-ish约定的案例,这种方式不能正确地分成友好的字符串吗? 我知道它不会将相邻的首字母缩略词(FDICFCUAInsured)分开,重新调整“正确”的像CamedCased类似的首字母缩略词,或大写一个lowerCamelCased标识符的第一个字母(但那个很容易添加 – result = Regex.Replace(result, “^[az]”, m=>m.ToString().ToUpper()); )。 还要别的吗? 任何人都可以看到一种方式来做出这样的陈述,或者更优雅吗? 我正在寻找组合替换调用,但由于他们对匹配执行两个不同的事情,因此无法使用这两个字符串完成。 它们可以组合成一个方法链,在String上使用RegexReplace扩展方法,但任何人都可以想到更好吗?

无法将类型’string’隐式转换为’System.Windows.Forms.TextBox’

我不知道该怎么办,因为错误发生在Form1.Designer.cs ,因为我没有调试程序部分的经验。 //Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(352, 246); this.Controls.Add(this.groupBox2); this.Controls.Add(this.groupBox1); this.Font = new System.Drawing.Font(“Tahoma”, 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Name = “Form1”; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = “Generate Username”; this.groupBox1.ResumeLayout(false); this.groupBox1.PerformLayout(); this.groupBox2.ResumeLayout(false); this.groupBox2.PerformLayout(); this.ResumeLayout(false);

在字符串上使用Razor引擎 – 而不是视图

我想使用没有视图(cshtml)文件的Razor引擎,但是在字符串上。 我想从MVC中做到这一点,我见过使用过的例子 new RazorViewEngine().Render 但是我找不到渲染方法,它是从MVC的旧时代开始的吗? 我也看过使用Razor.Parse的例子,但我也找不到它 – 可能错过了一个引用(但是如果我已经使用MVC那就应该存在,对吧?) 如果我需要做的就是在HTML字符串中注入3-4个参数,是否可以使用Razor? 我觉得我现在对MVC有点迷恋,可能不会直接思考。 我打算在内存中缓存HTML字符串,只从DB中传入模型。 谢谢

c#在不停止应用的情况下读取用户输入

我知道我可以使用ReadKey,但它会冻结应用程序,直到用户按下一个键。 是否有可能(在控制台应用程序中)运行一些循环仍然能够做出反应? 我只能想到事件,但不知道如何在控制台中使用它们。 我的想法是循环将在每次迭代期间检查输入。