我有一个Listpersonlist;我怎样才能转换成IEnumerableiPersonListPerson实现IPerson接口(interface) 最佳答案 如果您使用的是.NET4.0或更高版本,您可以只进行隐式转换:IEnumerableiPersonList=personlist;//orexplicit:variPersonList=(IEnumerable)personlist;这在IEnumerable中使用了通用逆变-即因为你只能从IEnumerable中得到一些out,你可以隐式转换IEnumerable至I
为什么不能转换一个实例:sealedclassFoo{publicvoidGo(){}}...到这个界面:interfaceIBar{voidGo();}...即使Foo具有IBar的签名?如何将Foo的实例转换为IBar?假设我无法控制Foo。 最佳答案 不,C#不支持鸭子类型。这个问题的OOP方法是使用theAdapterPattern.你会这样做:classFooBarAdapter:IBar{privatereadonlyFoofoo;publicFooBarAdapter(Foofoo){this.foo=foo;}pub
我有一个具有以下ctor的服务类:publicclass(IMessageServiceemailService,IMessageServicesmsService){...}和IMessageService的两个实现(电子邮件和短信)。如何配置容器以正确解析此构造函数?这是命名实例的用武之地,还是另一种情况? 最佳答案 您可以使用命名实例或智能实例来解决这个...//Namedinstancesthis.For().Use().Named("emailService");this.For().Use().Named("smsSer
我有一个例子:Assemblyasm=Assembly.Load("ClassLibrary1");Typeob=asm.GetType("ClassLibrary1.UserControl1");UserControluc=(UserControl)Activator.CreateInstance(ob);grd.Children.Add(uc);我正在创建类的实例,但是如何创建实现某个接口(interface)的类的实例?即UserControl1实现了ILoad接口(interface)。U:我可以稍后将对象转换为接口(interface),但我不知道程序集中的哪个类型实现了该接
大家好,我在这行代码中思考IDataReadermyReader=questDatabase.ExecuteReader(getQuest);我正在使用DAAB,但我无法理解方法ExecuteReader(DbCommand)返回IDataReader接口(interface)的方式和意义。任何人都可以解释,请 最佳答案 它允许您使用DataReader而无需知道您正在使用哪种类型的DataReader(即SqlDataReader、OleDbDataReader、EtcDataReader),所以如果有一天您想要更改您正在使用的D
我有一组A类和B类都有一些属性。和另一个具有自己属性的C类。每当我创建类C的实例时,我想使用objClassC访问所有三个类的所有属性。我如何在C#中实现这一点?我面临两个问题:-我不能同时继承类C中的类A、B(C#不支持多重继承)如果我使用接口(interface)而不是类A、B(在接口(interface)中我们不能包含字段) 最佳答案 为什么不在C类中包含A类和B类的实例。使用CompositionclassC{//classCpropertiespublicAobjA{get;set;}publicBobjeB{get;se
我是泛型的新手。我想通过从IList派生它来实现我自己的集合界面。能否请您提供一些指向实现IList的类的链接?接口(interface)或提供至少实现Add的代码和Remove方法? 最佳答案 除了派生自List,你可以门面List并向您的外观类添加更多功能。classMyCollection:IList{privatereadonlyIList_list=newList();#regionImplementationofIEnumerablepublicIEnumeratorGetEnumerator(){return_list
我有一个类CustomerNew和一个接口(interface)ICustomer:publicclassCustomerNew:ICustomer{publicvoidA(){MessageBox.Show("Classmethod");}voidICustomer.A(){MessageBox.Show("Interfacemethod");}publicvoidB(){MessageBox.Show("ClassMethod");}}publicinterfaceICustomer{voidA();}我对这两行代码很困惑。ICustomerobjnew=newCustomerNe
对于我的新宠物项目,我有一个设计问题,这个问题已经确定了,但我也想就此提出一些其他意见。我有两个类(简化):classMyObject{stringname{get;set;}enumrelation{get;set;}intvalue{get;set;}}classMyObjectGroup{stringname{get;set;}enumrelation{get;set;}intvalue{get;set;}Listmyobjects{get;set;}}稍后在项目中MyObjectGroup和MyObject应该被同等使用。为此,我可以采用两种方式:创建接口(interface)
我使用AvalonEdit:TextEditor。我可以为此控件启用快速搜索对话框(例如在Ctrl-F上)吗?或者也许有人有将搜索词输入AvalonEdit:TextEditor文本的代码? 最佳答案 关于它的文档不多,但AvalonEdit确实有一个内置的SearchPanel听起来完全像你想要的类。甚至还有一个SearchInputHandler类使得将它连接到您的编辑器、响应键盘快捷键等变得微不足道。下面是一些将标准搜索逻辑附加到编辑器的示例代码:myEditor.TextArea.DefaultInputHandler.Ne