Tag: 参考

C#WCF:在共享库中有一个app.config,提供对服务的访问

我目前有一个包含几个项目的解决方案,其中一个是WCF服务。 我创建了另一个使用静态类的投影,它基本上为WCF客户端的实例提供了一个网关,如下所示: public static class WSGateway { public static DBInteractionGatewayClient MR_WebService { get { return new DBInteractionGatewayClient(); } } } 这是(或者我认为)我可以使用仅在该库中的单个app.config文件,然后其他项目可以只引用它并从该属性获取对该客户端的引用。 但问题是,当一个项目试图访问该属性时,会抛出一个exception,告诉我在应用程序中需要app.config ,当我将app.config复制到我的网关库时,它可以工作。 有没有办法避免在应用程序中有多个app.config文件,并且只有一个可能是一个库? [更新]解决方案: 按照Anderson Imes的建议,现在我决定对类中的客户端引用配置进行硬编码,从而消除了对多个app.config的需求。 因此,我从这个( app.config )翻译了我的配置: 对此( static class ): public static class WSGateway { private static WSHttpBinding binding; private static EndpointAddress endpointAddress; static WSGateway() { var readerQuotas = new XmlDictionaryReaderQuotas() […]

如果我重建我的项目引用的dll,我是否还必须重建项目?

我一直在编写这个程序( FOO ),它包含对dll( BAR )的引用。 所有BAR包含的是执行各种不同计算的方法。 FOO将能够在多台计算机上安装和部署。 我的问题是,如果我在其中一个方法中更改公式(即将x – y x + y更改为x – y ),我是否需要针对新BAR重建FOO ? 更重要的是,部署新版本的BAR是否安全?

在C#中,我应该在哪里保留计时器的参考?

System.Threading.Timer的文档说我应该为它保留一个实时引用,以避免它被垃圾收集。 但是我应该在哪里这样做? 我的main是很简单,我不知道在哪里保留参考: class Program { static void Main() { new System.Threading.Thread(myThreadStart).Start(); new System.Threading.Timer(myTimerCallback, new MyStateObject(), 0, 5000); } } 我考虑将引用保存在Program类的static字段中,假设在应用程序结束之前不会收集static字段。 但我不确定这是最好的方法,所以我很感激你的建议。

在C#中按值传递引用类型

我想按值将引用类型传递给C#中的方法。 有没有办法做到这一点。 在C ++中,如果我想通过Value传递,我总是可以依赖复制构造函数来发挥作用。 在C#中有什么办法除外:1。显式创建一个新对象2.实现IClonable然后调用Clone方法。 这是一个小例子: 让我们用C ++中的A类来实现一个拷贝构造函数。 一个方法func1(Class a),我可以通过说func1(objA)来调用它(自动创建一个副本) C#中是否存在类似的东西。 顺便说一句,我正在使用Visual Studio 2005。

从另一个DLL引用DLL

我有一个C#应用程序,我们称之为App.exe。 它引用了一个名为A.dll的DLL,后者又引用了另一个DLL,即B.dll。 然而,它们被引用的方式有点不同。 在A.dll的代码中,它直接引用了B.dll(通过转到Project> References> Add B.dll)。 但是我的App.exe有代码在运行时使用Assembly.Load()等加载A.dll。 所以回顾一下, App.exe —-(运行时加载)—> A.dll —-(直接引用)—> B.dll 所有这三件事(App.exe,A.dll和B.dll)都存在于同一目录中,比方说ExeDir。 现在我想要做的是,将A.dll和B.dll放在ExeDir的子目录中。 我可以通过使用指定A.dll路径的App.config文件并要求App.exe从该路径加载A.dll来完成此操作。 到现在为止还挺好。 但问题是,当我这样做时,.NET给我一个错误,说它无法找到与A.dll在同一目录中的B.dll。 如果我将其移回原始目录(与App.exe相同的目录),那么它可以正常工作。 这意味着,我可以将A.dll放在子目录中,但B.dll需要位于原始目录中。 有什么办法可以将两个DLL保存在子目录中吗?

在C#中将类作为ref参数传递并不总是按预期工作。 谁有人解释一下?

我一直认为默认情况下,带有类类型的方法参数作为引用参数传递。 显然情况并非如此。 在C#中考虑这些unit testing(使用MSTest)。 [TestClass] public class Sandbox { private class TestRefClass { public int TestInt { get; set; } } private void TestDefaultMethod(TestRefClass testClass) { testClass.TestInt = 1; } private void TestAssignmentMethod(TestRefClass testClass) { testClass = new TestRefClass() { TestInt = 1 }; } private void TestAssignmentRefMethod(ref TestRefClass testClass) { testClass = new TestRefClass() […]

使用ref与C类#

我想给我正在制作的课程提供一个链接列表。 我希望该类写入该列表(例如,通过.addLast())。 我应该使用ref关键字吗? 我对在C#中使用ref和out关键字的位置感到有些困惑,因为所有类都是在堆上动态分配的,我们实际上使用指针进行大多数操作。 当然, out和ref关键字对于原语和结构是有意义的。 另外,如果我不直接发送列表,但发送包含列表的类? (这是internal和需要的),我还需要使用ref吗? 或者如果我在函数之间传递它,ex: void A(ref LinkedList list){ B(list); } void B(ref LinkedList list){ _myList = list; }

.Net 4.0 System.Web.Security.MembershipProvider含糊不清的参考?

我最近将BlogEngine.Net安装升级到1.6和.Net 4.0,但是,当我执行升级时,我没有构建BlogEngine.Core。 但是,当我尝试现在构建BlogEngine.Core项目时,编译失败,因为它无法加载(System.Web.Security。)MembershipProvider的符号。 我认为这是一个.Net / C#/用户问题而不是BlogEngine问题。 该项目引用了库System.Web,类文件(inheritance自MembershipProvider)包含一个Using for System.Web.Security。 启用ReSharper后,IntelliSense会指出使用哪个成员资格提供程序可以选择两个同名的库(System.Web.Security)。 什么可能导致这种模棱两可的参考? 如何确定引用哪两个库? 没有任何明显的表明重复的参考。 然后,一旦你看到它,显而易见的是显而易见的。

在UWP应用程序中使用WPF dll

我正在编写一个UWP应用程序,由于某种原因,我无法引用PresentationFramework.dll 。 它包含我想要使用的一些WPF控件(特别是System.Windows.Controls.DataGrid ,但它们在参考管理器中的Universal Windows >> Extensions下不可用。为什么会这样,我该如何修复它?

为什么在复制之后原始对象发生了变化,而不使用ref参数?

在工作中,我们遇到了一个问题,在我们通过方法发送副本后,原始对象发生了变化。 我们确实通过在原始课程中使用IClonable找到了解决方法,但我们无法找到它为什么会在第一时间发生。 我们编写了这个示例代码来重现问题(类似于我们的原始代码),并希望有人能够解释它为什么会发生。 public partial class ClassRefTest : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { var myclass = new MyClass(); var copy = myclass; myclass.Mystring = “jadajadajada”; Dal.DoSomeThing(copy); lit.Text = myclass.Mystring; //Text is expected to be jadajadajada, but ends up to be referenced } } public class MyClass { public string Mystring { […]