【c# – 使用具有流畅接口的类型推断】教程文章相关的互联网学习教程文章

首页> C#>我如何使用我的接口的实现,而不创建对实现的依赖?【代码】

我正在尝试利用从学习SOLID原理中学到的知识来制作简单的ASP.NET Webform. 我已经将解决??方案设置为3个项目:主要的asp.net Webforms项目,Data Access Interfaces类库项目和Data Access类库项目(具有Data Access Interfaces项目中接口的实现). 我在数据访问接口程序集中有一个ICoinStorage接口,看起来像这样(Coin只是生活在数据访问接口程序集中的DTO类):public interface ICoinStorage {void Persist(IEnumerable<Coin> coins);...

在C#中,这称为什么类型的接口实现

如果A类实现接口I1B类继承自A 那我们说B已经隐式继承了I1实现吗? A类:I1 B级:A 有什么区别吗 B级:A,I1解决方法:是的,有差异.查找“接口重新实现”以获取详细信息,或阅读C#规范的该部分. 另请参见https://blogs.msdn.microsoft.com/ericlippert/2011/04/04/so-many-interfaces/和https://blogs.msdn.microsoft.com/ericlippert/2011/12/08/so-many-interfaces-part-two/.

C#-Protobuff.net无法序列化接口【代码】

我遇到了错误The type cannot be changed once a serializer has been generated尝试使用Protobuff.net进行序列化时.我设法减少了查找罪魁祸首的代码,但想知道为什么它无法序列化此属性. 我找到了可以使用的有效解决方案,但对为什么此代码失败的解释感兴趣. 不会序列化:[ProtoContract] public class SomeController {[ProtoMember(3)]public int ControllerValue { get; set; }[ProtoMember(4, AsReference = true)]private ITes...

c#-接口继承.没有实现接口错误【代码】

我在使用继承接口时遇到问题.我将在下面的示例中解释我的问题.假设我有接口IFlyable:public interface IFlyable {IVerticalSpeed Speed { get; set; } }它包含IVerticalSpeed接口.我创建了另一个名为ISpeed的接口,该接口继承了IVerticalSpeed接口:public interface ISpeed : IVerticalSpeed {int MaxSpeed { get; set; } }在下一步中,我创建了一个实现IFlyable接口的Fly类:public class Fly : IFlyable {public IVerticalSpeed ...

C#-接口和对象反序列化【代码】

我有一个定义一个可序列化为字节数组的类的接口.public interface IByteSerializable {byte[] GetBytes(); }一个自然的伙伴是反序列化方法,我想返回一个实现IByteSerializable的对象. 我正在努力设计这种界面. 这似乎没有道理:public interface IByteSerializable {byte[] GetBytes();IByteSerializable GetObject(byte[] bytes); }因为GetObject()的实现不能是静态的,并且使用虚拟IByteSerializable对象只是为了调用GetObject()方...

C#查找没有泛型的所有类实现接口【代码】

我有通用类型的接口public interface IWork<T> {void Work(MySession session, T json); }当尝试此代码时,我试图找到实现具有所有通用类型的接口的所有类.var type = typeof(IWork<>); var types = AppDomain.CurrentDomain.GetAssemblies().SelectMany(s => s.GetTypes()).Where(p => type.IsAssignableFrom(p));它返回自己的接口.解决方法:问题是没有类/接口将直接扩展通用接口,它们都将扩展给定类型参数(例如字符串或其他类型参...

向系统C#添加新功能时,如何避免不断更改接口的方法【代码】

在我的工作中,我正在尝试创建更多的模块化系统,因为我们倾向于在游戏中使用具有较小差异的类似机制.为此,我一直在使用接口,但是在某些问题上感到困惑,特别是与添加小功能有关的问题. 例: 以我们的进化系统为例.我创建了IEvolvable接口,该接口具有演进级别的属性和Evolve()方法.public interface IEvolvable {int evolution { get; }bool IncreaseEvolution(int numEvolutions); }然后,我在Character类上实现了该接口的实现,并且根...

C#接口、抽象类和密封类【代码】【图】

定义接口 定义接口和定义类相似,只不过使用interface关键字. 在接口中按照与类和结构一样的方式声明方法,不允许指定任何访问修饰符. 此外,接口中的方法是没有实现的,它们只是声明。实现接口的所有类型都必须提供自己的实现 .下面是一个例子:interface Icomparable{int CompareTo(object obj);}接口不含任何数据;不可以向接口添加字段. 实现接口 为了实现接口,需要声明类或结构从接口继承,并实现接口指定的全部方法.注意: 1...

从接口类型的对象设置实现接口的类的所有成员,而无需使用C#编写大量代码【代码】

这听起来可能有点复杂,但是我会尽力解释清楚. 如果我的接口较长,是否可以在C#中使用:public interface IInterface {bool interface_1;bool interface_2;bool interface_3;bool interface_4;bool interface_5;... }和一个实现接口的类public class MyClass : IInterface {... }想象一下,我有一个IInterface myInterface对象,有没有一种方法可以创建MyClass对象myClass并使用myInterface之一设置myClass的所有字段,而无需一一设置所...

如何用比C#中的接口宽松的方式定义模板【代码】

说我有一组从模板生成文档的类.例如…class CustomerInvoice {public satic string TemplatePath { get { return @"C:\Templates\InvoiceTemplate.doc"; }}public static DocumentType DocumentType { get { return DocumentType.WordDocument; }}public static void Create(Customer customer, int orderNumber){//...} }所有这些类都共享相同的方法名称,但不一定共享方法签名. 例如,我可能有CustomerInvoice.Create(Customer cus...

具有返回多个接口实现的方法的C#接口【代码】

在使用接口时,我经常遇到这样的情况:我想确保从属性或方法的返回值,或者有时是方法的参数,实现两个或更多个接口而不创建新接口. 现在我的特定实例是我想指定一个方法将导致IEnumerable< SomeType>.还支持INotifyCollectionChanged-这样,使用该接口的另一个对象不必进行类型转换,并且仍然可以访问这两个设置. (我不想显式使用ReadOnlyObservableCollection,因为它只能与ObservableCollection对象一起很好地工作,但我也想让该选项保...

c#-.net-如何创建实现接口的UserControl? LoadControl错误【代码】

我有许多UserControl,我希望每个都有一些基本功能.下面是我的实现:public interface IMyTabInterface {void LoadData(); }public partial class MyFirstTab : System.Web.UI.UserControl, IMyTabInterface {public void LoadData(){...}}然后,在另一页后面的代码中,我尝试:protected void LoadFirstTab(){Control uControl1 = Page.LoadControl("/Controls/MyFirstTab.ascx");Control uControl2 = Page.LoadControl("/Controls/M...

【转】C#进阶系列——WebApi 接口参数不再困惑:传参详解【代码】【图】

阅读目录一、get请求1、基础类型参数2、实体作为参数3、数组作为参数4、“怪异”的get请求二、post请求1、基础类型参数2、实体作为参数3、数组作为参数4、后台发送请求参数的传递三、put请求1、基础类型参数2、实体作为参数3、数组作为参数四、delete请求五、总结 正文 前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料。如今,使用WebApi也有段时间了,今天就记录下API接口传参的一些方式方法,算是一个...

head first c# -- 第七章 (接口与抽象类)

接口的作用: 例子:有鸡,鸭,牛,羊4个类,还有farmer类; farmer.feed(obj obj) { obj.eat() } // 没有接口: farmer.feedChicken(Chicken chicken){ chicken.eat(); } farmer.feedDuck(Duck duck){ duck.eat(); } farmer.feedCow(Cow cow){ cow.eat(); } farmer.feedSheep(Sheep sheep){ sheep.eat(); } 使用接口: interface AnimalEat{void eat(); } farmer.feed(AnimalEat animal){animal.eat(); } 使用接口: 1.只用一个...

C#继承重载与接口的引入(二)【代码】【图】

这篇是对上篇的补充,和之前计划的有点小差异,多层次继承需要再往后靠靠了,还是先看代码namespace ConsoleApp1 {public interface It{void PI();}public class A:It{private int _type = 0;public int Type = 0;public A(int type){Type = _type = type;}public virtual void P(){Console.WriteLine("这是A的PP!");}public virtual void PI(){Console.WriteLine("这是A的PI!");}public void Dispatch(){switch (_type){case 1:(t...