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

c# – 基于接口的编程,我做得对吗?【代码】

好的,所以我决定开始在我的代码库中使用接口,这对于某些任务来说非常好.例如,我有一个实现IUrlBuilder的URL构建器类,现在实现并不重要.很棒,但以此界面为例.namespace SproutMessagingFramework.Webtext.Interfaces { using System.Net;public interface ICookieJar {CookieCollection Collection { get; set; }CookieContainer Container { get; set; }void AddResponse(HttpWebResponse Response);void AddResponse(HttpWebRespo...

C#8.0 中使用默认接口成员更新接口【代码】

连载目录 【已更新最新开发文章,点击查看详细】 从 .NET Core 3.0 上的 C# 8.0 开始,可以在声明接口成员时定义实现。 最常见的方案是安全地将成员添加到已经由无数客户端发布并使用的接口。 在本教程中,你将了解: 通过使用实现添加方法,安全地扩展接口。 创建参数化实现以提供更大的灵活性。 使实现器能够以替代的形式提供更具体的实现。 01 系统必备 需要将计算机设置为运行 .NET Core,包括 C# 8.0 预览版编译器。 从 Vi...

C#基于类型将类实现接口转换为Class【代码】

我的问题最好用一个例子来解释:public IPlotModel MyPlotModel; public ??? CastedModel;public Constructor() {MyPlotModel = new PlotModel(); //This should be interchangable with other types//E.g.: MyPlotModel = new OtherModel();CastedModel = (MyPlotModel.GetType()) MyPlotModel; }这基本上就是我想要的.CastedModel应该转换为MyPlotModel的类型. 我使用Convert.ChangeType()取得了一些成功.我设法将CastedModel的类...

c# – 创建一个返回实现通用接口的对象的方法【代码】

我有一个方法,应该返回一个实现通用接口的对象.它接受一个参数来确定实例化哪个类并返回实例化的对象.public class PlayerRetriever{public static IPlayer<T> Retrieve(string SitePath){if (SitePath == "Home") { return new Player1(); }else { return new AnotherPlayer(); }}}interface IPlayer<T>{void RunPlayer();List<T> RetrievePlayersByMovie(string movie);}“Player1”和“AnotherPlayer”都实现了IPlayer. 为什么我...

c# – 如何在类和派生类之间使用接口?【代码】

我目前正在尝试制作国际象棋游戏,并试图实现一个界面,但我无法访问界面.public interface IChessPiece {bool CheckMove(int row, int col); }public class ChessPiece { ... }public class Pawn : ChessPiece, IChessPiece {public bool CheckMove(int row, int col) { ... } }public class ChessPieces { public List<ChessPieces> chessPieces; ... }我似乎无法访问CheckMove()方法.board.chessPieces.Find(x => <condition>).C...

c# – 实现多个接口的参数【代码】

给以下代码:internal interface IHasLegs {int NumberOfLegs { get; } }internal interface IHasName {string Name { get; set; } }class Person : IHasLegs, IHasName {public int NumberOfLegs => 2;public string Name { get; set; }public Person(string name){Name = name;} }class Program {static void ShowLegs(IHasLegs i){Console.WriteLine($"Something has {i.NumberOfLegs} legs");}static void Main(string[] args)...

c# – 在接口中使用IEnumerator的模式

我有一个C#类需要在一堆方法中处理一系列项目(IEnumerable< T>),所以我不能简单地在一个方法中进行操作.我调用.GetEnumerator()并传递此IEnumerator< T>周围,??它工作得很好,给我提供了循环一个序列时所需的灵活性. 现在我想让其他人在这个过程中添加逻辑.最自然的方法是为它们提供一个接口,该接口具有接受IEnumerator< T>的方法.简单,完成,它的工作原理. 但我担心这是一种反模式.他们必须知道IEnumerator< T>已经调用了.MoveNext(...

C#在接口及其实现者类中使用泛型【代码】

我想创建一个适用于所有IComparable类型的接口.例如public interface SortAlgorithm<T> where T : System.IComparable<T> {List<T> Sort(List<T> input); }我希望它的实现者也是通用的,并且我在界面中提供了相同的规范.像下面的例子public class InsertionSort<T> : SortAlgorithm<T>这是我这样做的目的.我希望我的所有排序算法都适用于实现IComparable接口的所有类型.并且希望在接口中提供T是IComparable的子类的规范.但是当我这样...

c# – 具有接口约束和类实现接口的泛型类【代码】

最近我实现了一个Trie的数据结构,并决定节点可以存储不同类型的数据或者它的实现方式不同,所以我去了Node< T>.然后当我进入构建Trie的算法时,我意识到它需要更多关于Node的知识,所以我限制泛型类使用INode接口.这允许更大的灵活性,但在泛型类的上下文中感觉错误. 通用类对实现接口的类具有不同的用例.例如,List< T> – 算法可以在不依赖于相关抽象集的情况下工作.实现接口的类可能需要多态/ DI,但接口将更加专业化. 在什么情况下其...

c# – 当它只有一个具体的时候,如何让简单的注入器自动解析接口?【代码】

目前我有一个webapi控制器,其构造函数如下:readonly IQueryFactory queryFactory; readonly ICommandFactory commandFactory;public UserBenefitsController(IQueryFactory queryFactory, ICommandFactory commandFactory) {this.queryFactory = queryFactory;this.commandFactory = commandFactory; }我使用简单的注入器来注册这两种类型.container.RegisterWebApiRequest<IQueryFactory, QueryFactory>(); container.RegisterWe...

使用C#接口,同时最大化代码重用【代码】

所以说我有一个C#类,class Foo : Bar, IBar, IBar2 {}…其中Bar是一个类,IWhatever和IFine是接口.我打算在多个类中使用类似的IWhatever和IFine实现 – 我可以看到封装这些代码并在所有类中重用它的唯一理智方法是创建一个类,无论继承自IW和I的继承自IFine和使它们成为实现这些接口的类的成员,然后在从接口实现的成员中调用它们的成员,如下所示:class Foo : Bar, IWhatever, IFine {IWhatever mWhatever;IFine mFine;Foo(){mWhatev...

c# – 重新实现继承的接口方法【代码】

我没有完全理解使用Interfaces,所以我不得不问:-) 我使用BaseClass,它实现了IBaseClass接口.这个接口只包含一个声明:public interface IBaseClass {void Refresh (); }所以我在我的Baseclass中实现了一个Refresh方法:public void Refresh (){Console.WriteLine("Refresh");}现在我想使用从这些Baseclass扩展的一些类并实现IBaseClass接口:public class ChildClass : BaseClass,IBaseClass{}但是在我的BaseClass中实现“刷新”的...

C#中的接口多态性【代码】

我有这样的代码:public interface INode {INode Parent { get; set; }// ...... }public interface ISpecificNode : INode {new ISpecificNode Parent { get; set; }// ...... }public class SpecificNode : ISpecificNode {ISpecificNode Parent { get; set; }// ...... }此代码提供编译错误,因为未实现INode.Parent.但是,我不需要重复的父属性.我该如何解决这个问题?解决方法:我想你正在寻找这样的东西:public interface INod...

c# – 左侧接口【代码】

我知道我们无法创建Interface实例.但为什么我们可以在左侧编写接口?那些只是Interface的参考(对于实现此类的类)而不是实例? 如果我们不能创建Interface的实例,在这个例子中P是什么类型的?string[] names = {"John", "Bob", "Mark"}; IEnumerable<string> P = names.Where(n => n.Contains('o'));解决方法:P的类型为IEnumerable< string> 在这里,您将声明局部变量P的类型. P保存IEnumerable< string>的类型,虽然您没有直接实例化...

c#接口

定义接口: public interface I开头 able 能力 接口里面只能包含方法 方法 属性索引器 属性 接口中的所有成员都不能显示的 写任何修饰符 默认是public的访问修饰符 不能包含任何的实现 string Name { get; set;//不表示自动属性,表示一个未实现的属性 } 索引器 string this[int index] { get; set; } 接口不能实例化 接口就是让子类来实现的 接口中的成员子类必须实现 一个类只能继承一个父类,但可以实现多个接口 当一个类同...