Tag: interface

如何使WCF接口使用服务中声明的变量

我最近在这里遵循了MSDN教程,以便使用WCF进行服务。 我现在关心的是如何访问CalculatorWindowService从CalculatorService声明的变量,以便我可以修改它的值以供以后在CalculatorWindowService使用。例如,如果我在Add,Subtract,Divide和Multiply的方法中,如果我还想要存储结果到List DoubleList声明的List DoubleList using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel; using System.ServiceModel; using System.ServiceProcess; using System.Configuration; using System.Configuration.Install; namespace Microsoft.ServiceModel.Samples { // Define a service contract. [ServiceContract(Namespace = “http://Microsoft.ServiceModel.Samples”)] public interface ICalculator { [OperationContract] double Add(double n1, double n2); [OperationContract] double Subtract(double n1, double n2); [OperationContract] double Multiply(double n1, double n2); […]

C#没有使用RDotNet连接到R.

我正在尝试使用RDotNet将C#连接到R. 下面的代码是希望R计算两个数字的总和,并希望C#得到结果并在命令窗口中显示它。 using System; using RDotNet; namespace rcon { class Program { static void Main(string[] args) { string dllPath = @”C:\Program Files\R\R-3.1.0\bin\i386″; REngine.SetDllDirectory(dllPath); REngine.CreateInstance(“RDotNet”); //REngine engine = REngine.GetInstanceFromID(“RDotNet”); using (REngine engine = REngine.GetInstanceFromID(“RDotNet”)) { var x = engine.Evaluate(“x <- 1 + 2"); Console.WriteLine(x); } } } } 但是当我尝试将命令发送到R并在x中返回calue时出现错误: “InvalidOperationException未处理” “由于对象的当前状态,操作无效。” 如果我探索对象“引擎”,我看到IsRunning=false 。 这可能是问题吗? 我怎样才能解决这个问题,以便能够与R接口?

如何将表达式从类型接口转换为特定类型

在我的界面中,我有以下定义 List GetListOfFoo(Expression<Func> predicate) where T : IFoo; 在我的实现中,我将以特定类型转换表达式: if (typeof(T) == typeof(Foo)) { Expression converted = Expression.Convert(predicate.Body, typeof(Foo)); Expression<Func> newPredicate = Expression.Lambda<Func>(converted, predicate.Parameters); } 我尝试使用这样的实现: Expression<Func> predicate = c => c.Name == “Myname”; _repository.GetListOfFoo(predicate); 我没有编译错误,但是如果我使用它,我会得到一个exception,即ExpressionBody中定义的bool参数。 我的问题在哪里?

我可以全局设置要使用的接口实现吗?

我有一个界面: public interface IHHSDBUtils { void SetupDB(); bool TableExists(string tableName); . . . ……有多个实施者: public class SQLiteHHSDBUtils : IHHSDBUtils public class SQCEHHSDBUtils : IHHSDBUtils public class FlatfileHHSDBUtils : IHHSDBUtils public class TestHHSDBUtils : IHHSDBUtils 我希望能够从全局可访问的位置指定要使用的实施者,例如: public static class HHSConsts { public static IHHSDBUtils hhsdbutil = SQLiteHHSDBUtils; …然后从app中的任何地方调用它: private HHSDBUtils hhsdbutils { get; set; } . […]

C#日志设计:扩展方法,替代方案?

我想编写一个可以轻松附加到当前项目中任何类的记录器。 对于开发,将消息记录到控制台会很方便,而在最终版本中,我想记录到文件或其他内容。 一个人应该能够通过编辑几行代码或理想情况下的设置文件来改变行为。 到目前为止我所拥有的是这种类结构: public interface ILogger { void LogMessage(String message); // … other logging functions (exceptions, time etc.) don’t matter here }; public interface ILoggable { }; public static class LoggingProvider { private static ILogger logger = ConsoleLogger.handle; public static void LogMessage(this ILoggable obj, String message) { logger.LogMessage(message); } } public sealed class NullLogger […]

C#:表示方法的可执行方式是作为接口的一部分

在C#中是否有一种方法可以将方法标记为类的一部分以满足该类实现的接口? 我发现自己有时想在挖掘类的代码时为什么会有一些方法,但是当我尝试删除一个因为它没有被使用时,我认为为了让类实现一些接口是必要的。 将这些方法标记为这样很好。 也许像Java中的@Override注释 。 编辑:我宁愿不显式实现接口,因为然后访问我的类的实例上的接口方法变得更麻烦(即,必须在调用MyInterfaceMethod之前将MyClass的实例MyInterfaceMethod )。 编辑:我也不想使用区域。 我不希望通过某些任意名称松散地描述一大块代码作为接口实现的一部分,而是表示特定方法,无论它们在类中的哪个位置,都是接口的一部分。 甚至一些XML评论模板用于说明该方法所属的接口会很好。 编辑:所有答案似乎建议我明确实现接口,我不想做,或者我使用区域,我也不想这样做。 我认为威尔最了解我的要求。 我希望有类似注释的东西,所以我可以做类似以下的事情: [Interface(IMyInterface)] public void MyImplicitlyImplementedInterfaceMethod() { } 或者,正如dss539在对此答案的评论中提到的: public implement void MyImplicitlyImplementedInterfaceMethod() { } 就像我们今天override一样: public override bool Equals(object obj) { } 。

如何使用CodeDom创建一个接口方法

我正在使用CodeDom生成我的WCF服务接口和实现文件。 我在CodeMemberMethod上找不到任何可以生成接口方法的选项。 如果我使用MemberAttributes.Abstract,我几乎就在那里,但它包含对接口无效的abstract关键字。 有谁知道生成方法的正确语法? 这是我为生成接口文件而开发的代码:private void CreateServiceContractFile(Type entity,BoElement bo,DirectoryInfo serviceOutputDir,AppParameters appPrams){CodeCompileUnit serviceFileUnit = new CodeCompileUnit(); CodeNamespace importNameSpace = new CodeNamespace(“”); importNameSpace.Imports.Add(new CodeNamespaceImport(“System”)); importNameSpace.Imports.Add(new CodeNamespaceImport(“System.Collections.Generic”)); importNameSpace.Imports.Add(new CodeNamespaceImport(“System.Linq”)); importNameSpace.Imports.Add(new CodeNamespaceImport(“System.Runtime.Serialization”)); importNameSpace.Imports.Add(new CodeNamespaceImport(“System.ServiceModel”)); importNameSpace.Imports.Add(new CodeNamespaceImport(“System.ServiceModel.Web”)); importNameSpace.Imports.Add(new CodeNamespaceImport(“System.Text”)); importNameSpace.Imports.Add(new CodeNamespaceImport(“ALVIN.BusinessObjects”)); importNameSpace.Imports.Add(new CodeNamespaceImport(“DAOObjects = ALVIN.DAO”)); importNameSpace.Imports.Add(new CodeNamespaceImport(“ALIAS.BusinessObjects”)); importNameSpace.Imports.Add(new CodeNamespaceImport(“System.Data.Entity.Validation”)); importNameSpace.Imports.Add(new CodeNamespaceImport(“System.ComponentModel.DataAnnotations”)); importNameSpace.Imports.Add(new CodeNamespaceImport(“System.Data.Objects”)); importNameSpace.Imports.Add(new CodeNamespaceImport(“ALIAS.Common.Utility”)); importNameSpace.Imports.Add(new CodeNamespaceImport(“ALIAS.EventMessages”)); importNameSpace.Imports.Add(new CodeNamespaceImport(“ALIAS.ServiceCommon”)); importNameSpace.Imports.Add(new […]

使用DataContractSerializer序列化接口列表

我有一个类,其中有一些嵌套类。 我将它序列化并使用没有问题的方法将其发送到wcf服务。 这是class级; public class ComputerDTO { [DataMember] public ComputerTypeDTO Type { get; set; } [DataMember] public string ComputerName { get; set; } [DataMember] public MonitorDTO Monitor { get; set; } } 这是方法; public void Check() { Computer c = new Computer(); ISystemInfoOperations cli = GetServiceClient(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap() .ForMember(s => s.Hardware, m => m.MapFrom(q […]

抽象类和接口有什么区别?

可能重复: 接口与抽象类(通用OO) 我可以实例化一个Abstract类吗? 如果是这样,为什么我不会将所有非密封类抽象化? 如果我无法实例化它,那么界面有什么区别? 抽象类可以具有“基础”类function吗? 接口和抽象类之间的区别是什么?

如果从本地数据库中提取LINQ-to-SQL类,则不会实现INotifyPropertyChanging和INotifyPropertyChanged

我在LINQ-to-SQL类中修改了我的数据源(通过旧的删除并在方法中向后拖动),并且惊讶地看到生成的类(MyDb.designer.cs)中不再实现INotifyPropertyChanging和INotifyPropertyChanged接口。 各个领域的方法看起来像这样…… [Column(Storage=”_Size”, DbType=”NVarChar(100)”)] public string Size { get { return this._Size; } set { if ((this._Size != value)) { this.OnSizeChanging(value); this.SendPropertyChanging(); this._Size = value; this.SendPropertyChanged(“Size”); this.OnSizeChanged(); } } } 看起来像这样…… [Column(Storage=”_Size”, DbType=”NVarChar(100)”)] public string Size { get { return this._Size; } set { if ((this._Size != value)) { this._Size = value; } } } […]