草庐IT

INTERFACE

全部标签

c# - WCF 中的多态性

我正在考虑构建一个可以存储/检索一系列不同类型的WCF服务。以下示例是否可行并且也被认为是可接受的设计:[ServiceContract]publicinterfaceIConnection{[OperationContract]IObjectRetrieveObject(GuidObjectID);[OperationContract]GuidStoreObject(IObjectNewObject);}[ServiceContract][ServiceKnownType(IOne)][ServiceKnownType(ITwo)]publicinterfaceIObject{[Da

C# 向 COM 公开 - 接口(interface)继承

假设我有一个实现IBaseClass的类BaseClass然后我有一个继承IBaseClass的接口(interface)IClass。然后我有一个名为class的类,它实现了IClass。例如:[ComVisible(true),InterfaceType(ComInterfaceType.IsDual),Guid("XXXXXXX")]publicinterfaceIBaseClass{[PreserveSig]stringGetA()}[ComVisible(true),InterfaceType(ComInterfaceType.IsDual),Guid("XXXXXXX")]

c# - 为什么在实现接口(interface)时不能使用兼容的具体类型

我希望能够做这样的事情:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceTest{publicinterfaceIFoo{IEnumerableintegers{get;set;}}publicclassBar:IFoo{publicListintegers{get;set;}}}为什么编译器会报错……?Error2'Test.Bar'doesnotimplementinterfacemember'Test.IFoo.integers'.'Test.Bar.in

c# - C#中的重用抽象原则

在我们的C#MVC应用程序中,我们有很多接口(interface)与实现它们的对象一对一映射。即:基本上,对于创建的每个对象,都执行了“提取接口(interface)”操作。Moq使用这些接口(interface)为我们的单元测试生成模拟对象。但那是唯一一次重新使用接口(interface)。我们系统中没有具体对象实现多个接口(interface)。谁能告诉我这是否会在以后造成问题?如果是这样,它们会是什么?我在想,我们的应用程序有很多重复,例如在这两个接口(interface)中(编辑:在我们的服务层中)唯一不同的是方法名称和它们采用的参数类型,但是从语义上讲,他们对发送消息的存储库

c# - 显式接口(interface)实现不能是虚拟的

郑重声明,我已经看过这个connectitem但我真的不明白支持这个会有什么问题。假设我有以下代码:publicinterfaceIInterface{voidMethod();}publicclassBase:IInterface{virtualvoidIInterface.Method(){thrownewNotImplementedException();}}虚拟标识符有什么问题?使用virtual修饰符可以override指示基类中有不同的实现。我现在可以通过删除虚拟方法并像这样创建派生类来使其工作:publicclassDerived:IInterface{voidIInte

c# - 为什么 HashSet<T>.IsReadOnly 是显式的?

这个varh=newHashSet();varr=h.IsReadOnly;不编译。我必须做的varr=((ICollection)h).IsReadOnly;为什么IsReadOnly没有正常实现?(我不是在问如何,而是在问为什么) 最佳答案 我猜这是因为,虽然HashSet实现了ICollection,但IsReadOnly对HashSet没有任何意义。事实上,如果你反射(reflect)它,该属性总是返回false。实现它会从公共(public)接口(interface)中显式隐藏此方法。另一个原因是因为实现ICollecti

c# - 反射说接口(interface)方法在实现类型中是虚拟的,而实际上它们不是?

我在单元测试中有以下代码publicboolTestMethodsOf(){varimpl=typeof(T);varvalid=true;foreach(varifaceinimpl.GetInterfaces().Where(i=>typeof(I).IsAssignableFrom(i))){varmembers=iface.GetMethods();foreach(varmemberinmembers){Trace.Write("Checkingifmethod"+iface.Name+"."+member.Name+"isvirtual...");varimplMember=

c# - C# 中的内部属性 setter

我正在尝试找出解决此问题的好方法。我有一个实现ICustomer接口(interface)的Customer类。这个接口(interface)有很多属性:publicinterfaceICustomer{stringFirstName{get;set;}stringLastName{get;set;}}不过,我只希望某些类能够设置这些属性;即,项目中的那些类。所以我考虑将setter设置为internal:publicclassCustomer:ICustomer{stringFirstName{get;internalset;}stringLastName{get;internals

c# - ID一次性接口(interface)

我知道IDisposable接口(interface),它在.net中使用,但我心中有一个问题,如果我正在编写所有托管代码,是否实现了IDisposable接口(interface)有什么意义吗?我知道何时以及如何使用Idisposible但我的问题是如果我正在编写所有托管代码说一个简单的类没有什么昂贵所以如果我在这个类中实现IDisposable并做一些清理就像释放一些全局值,是否有意义? 最佳答案 不,您可能不需要使用IDisposble接口(interface)。但是,在某些情况下建议这样做(我可能会在以后添加更多,因为我记得

c# - 如何正确反射(reflect)基本接口(interface)方法

我通过反射调查了2个接口(interface)和2个类:家长IChild-派生自IParent家长子级-派生自父级对我来说奇怪的是,当我通过对IChild类型的反射进行查看时,我没有找到IParent方法。应用于Child类型的相同代码按预期工作-反射显示Parent方法。interfaceIParent{voidParentMethod();}interfaceIChild:IParent{voidChildMethod();}classParent{publicvoidParentMethod(){}}classChild:Parent{publicvoidChildMethod(