在.NET远程处理RemotingConfiguration.RegisterWellKnownServiceType和RemotingServices.Marshal之间有什么区别?

在.NET远程处理RemotingConfiguration.RegisterWellKnownServiceType和RemotingServices.Marshal之间有什么区别? 我想要做的是在Windows服务中创建一个对象,然后将其作为远程处理对象放入,并让Windows服务和客户端都作用于远程处理对象。 我认为下面的代码可以实现这一点。 FooRemoting foo = new FooRemoting(); RemotingConfiguration.RegisterWellKnownServiceType(typeof(FooRemoting), serverName, WellKnownObjectMode.Singleton); RemotingServices.Marshal(foo);

C#中的字符串赋值

几周前,我发现C#中的字符串被定义为引用类型而不是值类型。 最初我对此感到困惑,但经过一些阅读后,我突然明白为什么将字符串存储在堆而不是堆栈上是很重要的 – 因为将非常大的字符串复制到不可预测的数字上会非常低效堆栈帧。 我完全接受了。 我觉得我的理解几乎已经完成了,但是我缺少一个元素 – 字符串用什么语言来保持它们不变? 用代码示例来说明: string valueA = “FirstValue”; string valueB = valueA; valueA = “AnotherValue”; Assert.AreEqual(“FirstValue”, valueB); // Passes 当我将valueA分配给valueB时,我不明白哪个语言function会复制valueA。 或者,当我将valueA赋值给valueB时,对valueA的引用不会改变,只有valueA在我设置字符串时获得对它自身的新引用。 由于这是一个实例类型,我不明白为什么这样做。 我知道你可以重载,例如,==和!=运算符,但我似乎找不到有关重载=运算符的任何文档。 解释是什么?

用于.NET的缓存服务器(示例Memcached)

我正在寻找.NET的缓存服务器。 你能提出什么建议? 据我所知,memcached有.net的提供者。 在生产中使用.net是否足够好?

如何对整数的各个数字求和?

我有一个整数值(例如:723),我想将这个整数中的所有值相加,直到得到一个值。 ex: 7 + 2 + 3 = 12 1 + 2 = 3 我是C#的新手。 请给我一个很好的解释你的答案:)

你将如何使用C#4动态类型?

C#4将包含一个新的dynamic关键字,它将动态语言function引入C#。 您打算如何在自己的代码中使用它,您会提出什么样的模式? 您当前项目的哪一部分会使您的代码更清晰或更简单,或启用您可能根本无法执行的操作(在IronRuby或IronPython等动态语言之间的明显互操作之外)? PS:如果你不喜欢这个C#4,请避免负面评论。 编辑:重新发现问题。 动态的经典用法是大多数stackoverflow C#用户所熟知的。 我想知道的是,如果你想到特定的新C#模式,可以有效地利用动态而不会失去太多的C#精神。

我应该如何在ASP.NET MVC 4服务提供程序中实现SAMLP 2.0?

我正在使用C#开发一个MVC 4 Web应用程序,并希望使用现有的SAML 2.0身份提供程序来处理登录。 我正在使用与SimpleSAMLphp的 HTTP POST绑定 。 看起来,在.NET 4.5中,我应该使用Windows Identity Foundation 。 首先,我尝试安装身份和访问工具 。 (我使用的是Visual Studio 2013,它应该集成了这个工具,但是VS2013的版本不支持“re-entrancy” ,这意味着我不能用它来为我现有的应用程序添加WIF支持。) 在将Identity and Access Tool指向我的身份提供者的元数据后,我收到以下错误消息: 显然,这是错误消息,表明WIF不支持SAMLP 2.0 。 这似乎与支持的SAML 2.0 令牌不同(至少,这个过时的文档表明存在Microsoft.IdentityModel.Tokens.Saml2命名空间)。 然后我发现了SAML 2.0的WIF扩展 。 然而,这是在2011年5月发布的,从那时起似乎没有被触及过。 尽管如此,我下载了扩展程序并尝试构建ZIP文件中包含的SamlConfigTool。 该工具是一个控制台应用程序,通知我: 此工具将提示您创建描述您的信赖方的元数据文件所需的信息。 它将提示下载合作伙伴元数据文件的地址。 最后,它将输出一个名为Changes_To_Web_Config.xml的文件,该文件应对您的网站的web.config文件进行更改以启用SAML保护。 输入我的实体ID和SAML端点后,SamlConfigTool立即崩溃。 好吧,也许我不需要使用配置工具,我可以复制示例ServiceProvider VS项目中完成的工作。 迁移后,我可以在VS2012中打开项目,但我不清楚它究竟是如何工作的 – 它似乎不包含任何C#代码,只是Web.config中的新条目。 我不清楚如何调整此配置来替换我的MVC 4应用程序中的自定义登录代码,并且无论如何依赖于3年前的死库似乎不是一个好主意。 那么, 在ASP.NET MVC 4中实现SAML 2.0的最佳方法是什么 ? 我正在手工解码,编码,解析和压缩XML,感觉应该有一种更简单的方法。

在.NET 4.0中,值类型的Equals的默认实现是什么?

这两个文档页面似乎与此主题相矛盾: ValueType.Equals方法说“Equals方法的默认实现使用reflection来比较obj和这个实例的相应字段。” Object.Equals Method(Object)说“Equals的默认实现支持引用类型的引用相等,以及值类型的按位相等 ”。 它是按位平等还是反思? 我ValueType的源代码,发现评论说 //如果此对象中没有GC引用,我们可以避免reflection //并做一个快速的memcmp 有人可以澄清“GC参考”的含义吗? 我猜这是一个有引用类型的字段,但我不确定。 如果我创建一个只有值类型字段的struct ,它的实例是否总是与快速方式进行比较? 更新: .Net 4.5的文档已得到显着改进:它没有提到的矛盾,现在可以更好地理解默认值类型相等性检查的工作原理。

C#generics:通配符

我是c#世界的新手,我正试图围绕仿制药。 这是我目前的问题: public Interface IAnimal{ string getType(); } public Interface IAnimalGroomer where T:IAnimal{ void groom(T); } 现在我想要一本包含这些动物美容师的字典。 我怎么做? 在java中,我可以这样做: HashMap<String,IAnimalGroomer> groomers = new HashMap(); 编辑:这是我正在尝试做的一个例子: public class Dog : IAnimal { public string GetType() { return “DOG”; } public void ClipNails() { } } public class DogGroomer : IAnimalGroomer { public void Groom(Dog dog) { […]

将列表从IronPython传递给C#

我想将IronPython 2.6 for .NET 2.0中的字符串列表传递给C#程序(我使用的是.NET 2.0,因为我正在使用基于2.0构建的DLL运行的api)。 但是我不确定如何从ScriptEngine返回它。 namespace test1 { class Program { static void Main(string[] args) { ScriptEngine engine = Python.CreateEngine(); ScriptSource source = engine.CreateScriptSourceFromFile(“C:\\File\\Path\\To\\my\\script.py”); ScriptScope scope = engine.CreateScope(); ObjectOperations op = engine.Operations; source.Execute(scope); // class object created object classObject = scope.GetVariable(“MyClass”); // get the class object object instance = op.Invoke(classObject); // create the […]

在New AppDomain中加载程序集而不将其加载到Parent AppDomain中

我试图将一个DLL加载到控制台应用程序,然后卸载它并完全删除该文件。 我遇到的问题是,在自己的AppDomain中加载dll的行为会在Parent AppDomain中创建一个引用,因此不允许我销毁dll文件,除非我完全关闭程序。 有关使此代码有效的任何想法? string fileLocation = @”C:\Collector.dll”; AppDomain domain = AppDomain.CreateDomain(fileLocation); domain.Load(@”Services.Collector”); AppDomain.Unload(domain); 顺便说一下,我也尝试过这段代码而且没有运气 string fileLocation = @”C:\Collector.dll”; byte[] assemblyFileBuffer = File.ReadAllBytes(fileLocation); AppDomainSetup domainSetup = new AppDomainSetup(); domainSetup.ApplicationBase = Environment.CurrentDirectory; domainSetup.ShadowCopyFiles = “true”; domainSetup.CachePath = Environment.CurrentDirectory; AppDomain tempAppDomain = AppDomain.CreateDomain(“Services.Collector”, AppDomain.CurrentDomain.Evidence, domainSetup); //Load up the temp assembly and do stuff Assembly projectAssembly = tempAppDomain.Load(assemblyFileBuffer); […]