草庐IT

INTERFACE

全部标签

c# - 除了泛型类之外,还有其他方法可以在不装箱的情况下调用结构的接口(interface)方法吗?

查看代码片段publicinterfaceI0{voidf0();}publicstructS0:I0{voidI0.f0(){}}publicclassAwhereE:I0{publicEe;publicvoidcall(){e.f0();}}这里是call()的IL代码.maxstack8L_0000:ldarg.0L_0001:ldflda!0Temp.A`1::eL_0006:constrained!EL_000c:callvirtinstancevoidTemp.I0::f0()L_0011:ret参见constrained的引用资料Theconstrainedprefixc

c# - 如何使用 ISynchronizeInvoke 接口(interface)?

ISynchronizeInvoke的工作过程是怎样的?如何在C#中使用它? 最佳答案 这基本上描述了一种在线程之间推送工作的方法;要将工作项推送到另一个线程,请使用Invoke(同步)或BeginInvoke(异步-理想情况下稍后调用EndInvoke)。同样,InvokeRequired用于询问“我需要这样做吗?还是我可以自己执行工作?”。此接口(interface)最常见的用途是在Windows窗体中,它是如何将工作推送到UI线程的一部分;您当然可以同样使用Control.Invoke/Control.BeginInvoke,

c# - 什么时候需要在 C# 中通过 COM 查询的接口(interface)上调用 Marshal.ReleaseComObject

我一直在使用一些DirectShow接口(interface)来使用C#和DirectShow.Net播放数字电视(DVB-T).我最近遇到运行时错误COMobjectthathasbeenseparatedfromitsunderlyingRCWcannotbeused.此错误发生在以下行中:_guideData=_transportInformationFilterasIGuideData;_transportInformationFilter属于IBaseFilter类型,这是一个先前通过DirectShow.Net实用程序函数分配的COM对象。我假设错误是由于_transpor

c# - 实现具有通用约束的接口(interface)

有点惊讶为什么这不起作用这是编译器的限制还是不支持它是否有意义?publicclassClass1:IInterfacewhereT:Test2{publicTTest{get;privateset;}}publicclassTest2{}internalinterfaceIInterface{Test2Test{get;}}我得到的错误是'ClassLibrary1.Class1'doesnotimplementinterfacemember'ClassLibrary1.IInterface.Test'.'ClassLibrary1.Class1.Test'cannotimpleme

c# - 定义一个接受不同参数的接口(interface)方法

我的应用程序使用连接到PC的测量仪器。我想让使用来自不同供应商的类似仪器成为可能。所以我定义了一个接口(interface):interfaceIMeasurementInterface{voidInitialize();voidClose();}到目前为止一切顺利。在测量之前,我需要设置仪器,这意味着不同仪器的参数会有很大不同。所以我想定义一个方法,该方法采用可以具有不同结构的参数:interfaceIMeasurementInterface{voidInitialize();voidClose();voidSetup(objectParameters);}然后我会将对象转换到我需要

由空抽象类实现的 C# 接口(interface)

我能否将实现接口(interface)的抽象类留空,并暗示接口(interface)中的所有方法/属性在我的类中都是抽象的。看来我必须在抽象类中再次写出它们,但我真的想避免这种重复。我的原因是我有几个具有不同访问器的接口(interface),一个是公共(public)的,一个是内部的,我想把它们放在一起,所以我有一个抽象类来实现它们,然后可以扩展。publicinterfaceISomePublicProperties{intPropertyOne{get;}}internalinterfaceISomeInternalProperties{intPropertyTwo{get;}}

以 I 开头的 C# 类名

我正在编写一个名称以I开头的类(因为这是我们要集成的产品的名称-无法更改)。约定规定类名以大写字母开头,但在这种情况下,它对消费者来说将显示为一个接口(interface)。此处是否有指导开发人员采用正确方法的文档?此外,如果我确实需要实现和接口(interface)会发生什么-它应该是IiProduct/IIProduct吗?编辑添加:由于显而易见的原因,我不能提及该产品,但它遵循与apple相同的大写惯例。iPhone,因此IPhoneClass(遵循其品牌但显示为界面)而不是IphoneClass(遵循约定而非品牌)。 最佳答案

c# - 抽象类和接口(interface)的多重继承

我用C#.NET写了下面的代码publicinterfaceIWork{voidfunc();}publicabstractclassWorkClass{publicvoidfunc(){Console.WriteLine("CallingAbstractClassFunction");}}publicclassMyClass:WorkClass,IWork{}编译时,我没有收到任何错误。编译器没有强制我实现方法“func();”在派生自接口(interface)“IWork”的“MyClass”中。之后,我可以优雅地创建类“MyClass”的实例并调用函数“func()”。为什么编译

c# - 在没有类型库的情况下使用 C# 中的 COM dll

我需要使用很久以前用Delphi开发的COM组件(dll)。问题是:dll不包含类型库…….NET中的每个互操作功能(例如TlbImp)似乎都依赖于TLB。该组件已在此处的Delphi程序中使用多年,没有出现任何问题,因为“使用Delphi的COM对象不是什么大问题,因为我们知道接口(interface)”(引用Delphi开发人员的话)。有什么方法可以在没有TLB的情况下从c#使用此DLL?我试过将DLL用作非托管,但它导出的唯一方法是DllUnregisterServer、DllRegisterServer、DllCanUnloadNow和DllGetClassObject。我知道

c# - C# 4.0 元组是协变的吗

(我会自己检查一下,但我还没有VS2010(还))假设我有2个基本接口(interface):IBaseModelInterfaceIBaseViewInterface还有2个实现这些的接口(interface):ISubModelInterface:IBaseModelInterfaceISubViewInterface:IBaseViewInterface如果我定义一个Tuple我想根据返回Tuple的工厂的结果来设置它.在C#3中,即使子接口(interface)实现了基接口(interface),我也不能这样做。如果我使用IEnumerable,我很确定C#4允许我这样做因为它