Tag: .net 4.0

协方差胜过具体类型?

说实话 – 我问过(这个问题的一部分) ,但现在我有一个不同的相关问题。 public class Base { public void Foo(IEnumerable strings) { } } public class Child : Base { public void Foo(IEnumerable objects) { } } List lst = new List(); lst.Add(“aaa”); Child c = new Child(); c.Foo(lst); (在C#3中它将调用:C#4中的Child.Foo将调用: Child.Foo ) 我在FW4! , 让我们来谈谈它 所有对协方差的尊重:当我写c.Foo(lst); (我是STRING的IEnumerable !) – 它看到两个签名! 但仍然 – 它选择IEnumerable ?? […]

如何将任务的已取消状态传播到延续任务

我在我的应用程序中使用任务并行库。 我有一个任务(让我们称之为“DoSomething”)可能被取消。 无论任务是故障,取消还是成功完成,我都会继续执行该任务,执行一些清理工作。 在启动此任务的代码中,我想返回一个Task对象,其状态(出错,取消,运行完成)反映了DoSomething任务的状态,但重要的是我返回的这个任务不会反映这个状态,直到继续任务执行。 这是一个例子: public Task Start(CancellationToken token) { var doSomethingTask = Task.Factory.StartNew(DoSomething , token); var continuationTask = doSomethingTask.ContinueWith ( (antecedent) => { if (antecedent.IsFaulted || antecedent.IsCanceled) { //Do failure-specific cleanup } //Do general cleanup without regard to failure or success } ); //TODO: How do I return a Task obj which Status reflect […]

表单身份validation添加其他信息以及ReturnUrl

使用表单身份validation,当应用程序需要重定向到登录页面时,是否有一个事件或任何可扩展点,可以让我在重定向到登录页面之前对请求执行其他工作? 我想在查询字符串中发送可能不同的其他信息,以便在web.config中的loginUrl节点的链接中静态嵌入它。 编辑:为了澄清,我想在重定向到登录页面之前拦截请求。 例: 在用户被重定向到http://the/interwebs/login.aspx之前,我希望能够打包查询值,这样url可能会结束像http://the/interwebs/login.aspx?Action =刷新

使用PHP对ASP.NET成员资格中的用户进行身份validation

尝试使用PHP对现有ASP.NET成员资格数据库进行身份validation时,我遇到了一些问题。 我搜索过网络,我发现的现有答案似乎对我不起作用。 即: public static function Hash($password, $salt) { $decodedSalt = base64_decode($salt); $utf = mb_convert_encoding($password, ‘UTF-16LE’, ‘UTF-8’); return base64_encode(sha1($decodedSalt.$utf, true)); } 我认为问题的一部分是密码哈希实际上不是用SHA-1计算的,因为数据库中的值是44个字符长,base64编码的字符串(这意味着输入可能是256位长)。 我试过用SHA-256代替SHA-1,但无济于事。 我在web.config中找不到一个机器密钥,它可以进一步腌制哈希值,当我在本地运行或在生产服务器上运行时,ASP.NET站点生成相同的哈希值,所以我不知道为什么它们不是不匹配。 Web.config成员资格提供程序: 应该起作用的示例密码: $salt = ‘Mu1tp8XzfKl8dSTVAZm44A==’; // Straight from the DB $password = ‘testing’; $expectedHash = ‘TQN7m8OWIyBOKVwzegWSUBVq7o7+KWFBc46J+B77mLw=’ // Straight from the DB // When using the above Hash function with SHA-256 instead […]

c#4中的DLR和Javascript解释?

我想使用DLR从c#执行javascript代码。 所以我用c#和Jint编写了一个简单的代码: var script = @” function show( ) { return parseInt(‘123asd’); //in js it’s 123 }; return show();”; var result = new JintEngine().Run(script); Console.WriteLine(result); javascript中的parseInt(‘123asd’)是: 123 但我得到的结果是: 也许我看不到全貌,但如果世界另一端的程序员发给我他的脚本文件,我(和他)期望结果是一致的! 如果我弄错了,在什么情况下我会在.Net上运行其他代码? (我必须对每一行代码都 非常怀疑 ……)

使用.NET 4.5构建的应用程序可以在.NET 4.0上运行吗?

我的项目是针对.NET 4.5。 它不使用任何新的4.5方法,因此它实际上只在安装了.NET 4.0的机器上正常工作。 在我添加一些扩展方法和reflection之前,这一切都很好。 然后当我在4.0机器上运行这个.NET 4.5程序时,它失败并出现“System.TypeLoadException:无法从程序集mscorlib加载类型’System.Runtime.CompilerServices.ExtensionAttribute’”。 着名的ExtensionAttribute程序已在此处记录良好。 另一种快速测试方法是添加以下行。 然后程序将仅在.NET 4.0上运行时抛出exception。 Console.WriteLine(typeof(System.Runtime.CompilerServices.ExtensionAttribute).Assembly.FullName); 我想知道是否有办法解决它。 例如,ILMerge(当使用链接中记录的正确/ targetplatform选项时)实际上将ExtensionAttribute从mscorlib更改为System.Core(如果项目是针对.NET 4.0(安装了4.5))。 但它似乎不适用于针对.NET 4.5的项目。 我知道这是一个很长的镜头。 但只是想知道是否有人有其他想法,因为它是如此接近。 谢谢。

是否有更好(更简单)的方法来获取特定域的SID?

我被指派修改WinForms应用程序,基本上检查登录用户是否属于特定域。 这是我到目前为止所提出的: byte[] domainSid; var directoryContext = new DirectoryContext(DirectoryContextType.Domain, “domain.se”); using (var domain = Domain.GetDomain(directoryContext)) using (var directoryEntry = domain.GetDirectoryEntry()) domainSid = (byte[])directoryEntry.Properties[“objectSid”].Value; var sid = new SecurityIdentifier(domainSid, 0); bool validUser = UserPrincipal.Current.Sid.IsEqualDomainSid(sid); 有没有更好/更简单的方法来做到这一点? 对我来说,似乎可以使用PrincipalContext或System.Security.Principal中的其他类以某种方式访问​​domainSid。 我考虑过使用硬编码的SID字符串,但我不知道它是多么“正确”。

Lambda具有嵌套类

我刚刚发布了这个问题但得到了我的问题的部分答案,所以我想我发布了更多的解释,希望得到一个更准确的答案。 我有2个class: public class Employee { public string Name { get; set; } public List Cars { get; set; } } public class Car { public int CarID { get; set; } public CarTypes CarType { get; set; } public enum CarTypes { Van, SmallCar } } 我试图只获得所有使用Lambda分配了使用SmallCars忽略那些货车的员工,我尝试了这一行: List EmployeesWithVans = AllEmployees.Where(emps => emps.Car.Any(cartype => […]

使用.NET 4.0更改Windows Wallpaper?

有没有办法使用.NET 4中的一些新function更改Windows壁纸?

为什么TextRenderer.MeasureText没有正常工作?

我想在给定一定宽度的可用canvas的情况下测量文本的高度。 我传入的文本很长,我知道会包装。 为此,我呼吁以下内容: using System.Windows.Forms; … string text = “Really really long text that is sure to wrap…”; Font font = new Font(“Arial”, 14); Size canvas = new Size(1100, 850); Size size = TextRenderer.MeasureText(text, font, canvas); 无论我为canvas传递什么,它总是返回14 size.Height 。 size.Height 。 我错过了一些简单的事吗?