【c#接口】教程文章相关的互联网学习教程文章

c# – 实现从非泛型接口继承的通用接口【代码】

我知道如何实现一个继承非通用接口的通用接口,但是在这个过程中有一些我不理解的东西: 为什么在实现接口的类中不能将非泛型接口方法声明为public? 一个例子:interface InputTestSocket{object GetValue();}interface InputTestSocket<T> : InputTestSocket{new T GetValue();}class FloatInputSocketValues : InputTestSocket<float>{IFloatConvertable _output;public void SetConvertable(IFloatConvertable output) { _outpu...

c# – RunAsync中的Spawning actor抛出“对象’CustomActorService.InternalCustomActorService’未实现接口id’1830616258【代码】

我正在遵循Service Fabric spawn actor on startup中的建议,在服务开始时产生几个演员.我有一个自定义的ActorService子类,其中包含以下RunAsync覆盖:internal sealed class InternalCustomActorService : ActorService {protected async override Task RunAsync(CancellationToken cancellationToken){await base.RunAsync(cancellationToken);for(int i = 0; i < 10; i++){ICustomActor proxy = ActorProxy.Create<ICustomActor>...

c# – 为什么接口IOrderedEnumerable在T中不协变?【代码】

我正在查看IOrderedEnumerable的声明,我很惊讶它在TElement类型参数中不是协变的.public interface IOrderedEnumerable<TElement> : IEnumerable<TElement>, IEnumerable {IOrderedEnumerable<TElement> CreateOrderedEnumerable<TKey>(Func<TElement, TKey> keySelector, IComparer<TKey> comparer, bool descending); }它没有变成协变的原因是什么?解决方法:这是一个疏忽,并在.NET Core中得到修复.这里是(关闭)issue,这是pull r...

c# – 使用泛型类和接口实现抽象工厂【代码】

我想实现一个抽象工厂(带有单例)并在我的代码中使用它,并将TType和TInterfaceType的具体实例映射到. 这是我目前的代码:public abstract class AbstractFactory<TType, TInterfaceType> where TType : new() where TInterfaceType : class {private TInterfaceType objectTtype;public TInterfaceType getInstance(){try{if (objectTtype == null){objectTtype = new TType();}return objectTtype;}catch (Exception e){throw e;}}...

c# – 通用接口实现混乱【代码】

我对接口实现有点混乱,所有我尝试过的’修复’似乎都让整个解决方案变得更加复杂和破碎.我确信有一个简单的答案,但我现在看不到它! 我有这两个接口(第二个在第一个列表中使用):public interface IUserDefinedListEditViewModel<T> where T : IUserDefinedListEntryEditViewModel<IBaseUserDefinedListModel> {string TypeName { get; set; }IList<T> UserDefinedListEntries { get; set; } }public interface IUserDefinedListEn...

c# – SVG曲线的接口与缺失的并集【代码】

对于可缩放矢量图形的GPU渲染器的预处理步骤之一,我正在处理SVG曲线(四种类型:线,二次和三次贝塞尔曲线和椭圆弧).其中一个步骤是交叉点上的曲线细分,作为填充双重连接边列表的预步算法. 以前,我将每种类型的曲线存储在一个单独的结构中(Line,QuadraticBezier,CubicBezier和EllipticArc),这意味着,为了对它们进行操作,我需要为每个组合编写相同(相似)的代码(领先高达10代的代码).现在,我想尝试一些不同的东西.我有两个选择:使用接...

c# – 属性,接口或抽象类【代码】

我想知道以下实现的一般建议(属性,接口,抽象类或其组合):/// <summary>/// Loads class specific information into a list for serialization. The class must extend PlugIn./// The filenames parameter is passed from a FileDialog./// </summary>/// <param name="filenames">Accepts any number of filenames with fully qualified paths.</param>public static void ExtractPlugInData(params string[] filenames){List<Ty...

C#中COM接口的显式接口实现

有一段时间我以前正在研究用COM实现的旧Win32程序的主要重构,并且有各种各样的部分用C#(.NET)实现.在我参与这个项目的过程中,我遇到了一个关于C#中COM编程的Microsoft页面,它建议C#类显式实现COM接口,而不是隐含.我最近试图记住原因,但我不能.我也无法再次在MSDN网站上找到该页面.任何人都可以告诉我为什么微软可能会推荐这个?解决方法:嗯,这有点意义,COM是纯粹的基于接口的编程,并且应该隐藏接口的实际实现.实现接口方法显然会自...

c# – 如果要在从接口继承的不同类之间进行选择,如何不违反OCP?【代码】

我有一个接口让我说ISendOut,我从它继承了两个不同的类例如TransferViaSerialPort和TransferViaWirelessModule(我的意思是在这两个类中实现这个接口).如何设计我的软件,使用户能够选择(在UI中)通过SerialPort或WirelessModule发送他/她的数据的方法,而不是违反OCP?因为如果我想要一个“Switch Case”或“If / Else”语句,我会违反OCP.解决方法:您需要使用工厂模式.要使Factory Pattern动态化,您可以使用Reflection并在UI中显示类的...

c# – MVC中ViewModel Builders的接口【代码】

我一直在努力决定如何在我的MVC解决方案中处理ViewModels.我认为,在阅读了不同的帖子和博客后,最好的方法是让构建器实现一个接口,然后将它们注入控制器本身. 使用automapper我将在每个构建器的实现中执行实体和视图模型之间的映射,并且控制器将保持非常薄. 所以我创建了这个界面public interface IViewModelBuilder<TViewModel, TEntity> {TViewModel Build(TEntity entity); }目前我忽略了关于使它们协变和逆变的警告(不知道是否需...

c# – 如何通过接口解决这个问题?【代码】

我正在使用实体框架,这就是我的问题所在,但它可能不相关,因为我认为这是一个通用的C#问题. 我有一个MyContext类,它有许多DbSet< T>属性. 为了对它进行单元测试,我编辑了MyContext,因此这些是IDbSet< T>相反,并嘲笑它. IDbSet&LT T&GT是实体框架的一部分,DbSet实现它,因此两者几乎完全相同. 一切都很像这样,因为我可以做到IDbSet< T>我可以做的一切DbSet< T> 除了一件事之外的一切–DbSet有一个叫做SqlQuery(..)的方法,我也希望能够...

c# – 没有实现接口成员【代码】

嗨,我有以下代码,但我一直收到错误: ‘JsonWcfService.GetVenues’没有实现接口成员’GetVenuesByLocation(string search)’. 我对C和.Net相当新,所以大部分内容都是剪切和粘贴的. 非常感谢您的帮助. IGetVenues.csusing System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; using System.ServiceModel.Web;namespace JsonWcfServ...

C#内联方法会在接口中声明吗?【代码】

如果我有一个界面:interface IMyInterface{void DoSomething();}一个实施类:class MyClass : IMyInterface{public void DoSomething(){}}DoSomething是内联的候选人吗?我期望“不”,因为如果它是一个接口,那么该对象可以被转换为IMyInterface,因此被调用的实际方法是未知的.但是事实上它没有标记为虚拟意味着它可能不在vtable上,所以如果对象被转换为MyClass,那么也许它可以被内联?解决方法:如果您直接调用DoSomething,那么它将...

c# – 多接口继承中的问题【代码】

我有一个相当大的应用程序,它有很多基类.我想将其更改为接口,以允许(更容易)单元测试. 但是,当我对可能使用的接口进行新的“设计”时,我注意到某些类将继承自5个或更多接口.这会引起问题吗? 我问这个,因为我不想重构整个应用程序,发现它不起作用;或者,如果有一个很好的解决方案,将其纳入重构步骤. 我想到的一些接口(伪代码).它不完整但它显示了我想要的界面关系(还会有更多).例如. IBank来自5个接口,我认为还需要更多接口.INaviga...

c# – 当结构最终变成约束时(由于接口 – 并且编译器变得脾气暴躁)该怎么办?【代码】

编辑:我得出的结论是,不可能满足我所有的要求! 原始问题……我似乎陷入了一个不幸的困境.它归结为结构不是有效的通用约束 – 这是完全理智的,但问题出现了…… 为什么你想要将泛型约束到结构?好吧,我真的不想这样做 – 这是界面设计的结果. 我将通过完成导致我在那里的过程来解释我的困境: 假设我有一个(可能)性能关键泛型方法的接口,即:interface ISomeInterface {Result RelativeComputation(ISomeInterface other); }然而,...