【C#中的接口和类有什么异同】教程文章相关的互联网学习教程文章

c# – 将NULL传递给COM接口方法的ref / out参数【代码】

如果定义为[In,Out] ref int pchEaten,如何将NULL传递给COM接口方法的参数? 例如,请考虑以下界面:[ComImport, Guid ("000214E6-0000-0000-C000-000000000046")] [InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] internal interface IShellFolder {void ParseDisplayName ([In] IntPtr hwnd,[In] IBindCtx pbc,[In, MarshalAs (UnmanagedType.LPWStr)] string pszDisplayName,[In, Out] ref uint pchEaten,[Out] out PID...

c# – Linq ToDictionary不会隐式地将类转换为接口【代码】

我有以下代码public class TestAdaptor {private interface ITargetClass{Guid Id { get; }string Name { get; }}private class MyTargetClass : ITargetClass{public Guid Id { get; private set; }public string Name { get; private set; }public MyTargetClass(MySourceClass source){}}private class MySourceClass{public Guid Id { get; set; }public string Name { get; set; }}private Dictionary<Guid, IEnumerable<ITar...

c# – 如果声明是接口,编译器不会识别泛型中的属性【代码】

看看以下演示Visual Studio 2017编译器的问题public interface IFoo {string Key { get; set; } }public class Foo : IFoo {public string Key { get; set; } }class Program {static void Main(string[] args){PrintFoo(new Foo() { Key = "Hello World" });Console.ReadLine();}private static void PrintFoo<T>(T foo) where T : IFoo{//set breakpoint here and try to look at foo.KeyConsole.WriteLine(foo.Key);} }当我在Pr...

c# – 通过反射在类上调用多个通用接口方法【代码】

警告:虽然接受的答案是正确的,但对于任何试图实现此问题的人,请参阅@ CodesInChaos的评论.这对我来说是一个坏主意. 我有一个通用接口和一个实现接口’n’次数的类:interface IA<T> {T Foo(); }class Baz1 { } class Baz2 { }class Bar : IA<Baz1>, IA<Baz2> {Baz1 Foo() { return new Baz1(); }Baz2 Foo() { return new Baz2(); } }如何使用反射在Bar实例上调用两个Foo方法? 我已经有以下代码来获取接口定义和泛型类型参数:cla...

c# – 接口继承问题【代码】

我有IServiceHandler和ISalesHandler,都继承自Ihandler IHandler.cspublic interface IHandler {Task AddAsync(IEnumerable<IDictionary<string, object>> toAdd, int dataFileId);Task AddAuditAsync(IEnumerable<IDictionary<string, object>> toAdd, int dataFileId); }IServiceHandler.cspublic interface IServiceHandler : IHandler {Task<IEnumerable<ACService>> GetAsync();Task<IEnumerable<ACServiceAudit>> GetAuditAs...

c#-将简单对象转换为简单通用接口【代码】

我正在寻找一种将对象转换为简单接口以及从简单接口派生的通用接口的方法. 这是我的示例:interface INonGeneric {}interface IGeneric<T> : INonGeneric where T : ITypeParameter {T Build(); }interface ITypeParameter {}class TypeClass : ITypeParameter {}这就是我尝试使用的设计.如果我对泛型的理解存在缺陷(我认为是有缺陷的),那么错误对于您将是显而易见的. 然后创建我要使用的类:class MyClass : MyClassBase<TypeClas...

c# – Moq:设置属性的简单方法,属性是多个接口的一部分【代码】

我有一些接口,我试图用以下结构模拟(简化):interface A {DateTime DateCreated { get; set; } } interface B : A {DateTime DateCreated { get; set; } }我遇到的问题是DateCreated是每个接口的一个单独属性,所以即使我知道的具体对象只有这些共享属性的一个共享实现,调用Mock.SetupAllProperties给每个接口一个单独的实现.这意味着它们不共享值,因此调用((B)obj).DateCreated = {blah}在((A)obj)访问.DateCreated时不会在其他地...

在C#中创建接口的对象【代码】

我正在学习使用实体框架(仍然是实体框架和C#的新手), 在阅读其中一个教程时,我遇到了以下代码:public class EntityF : IEntityWithChangeTracker,IEntityWithKey{private IEntityChangeTracker changetracker;public void SetChangeTracker(IEntityChangeTracker changetracker){this.changetracker = changetracker;} }我们可以在这样的类中利用引用另一个接口吗?private IEntityChangeTracker changetracker;甚至没有实现IEnti...

c#中继承和接口的区别与联系

一. 定义: 1. 继承: 把两个或多个类的相同属性提取出来,将这些属性合在一起建立父类! 例:class A { public void Sum(int i,int j) { int sum = i + j; Console.WriteLine("I am A ,my sum ={0}",sum); } } class B : A { public void Minus(int i,int j) { int minus = i - j; Console.WriteLine("I am B ,my minu...

c# – 具有动作/函数参数的接口的Moq设置【代码】

我试图模拟对服务器的调用,并验证测试的代码调用正确的方法.代码结构如下:public interface IServerAdapter {void CallServer(Action<IServerExposingToClient> methodToCall, out bool serverCalled);object CallServer(Func<IServerExposingToClient, object> methodToCall, out bool serverCalled); }public interface IServerExposingToClient {Resource GetResource(string id);void AddResource(Resource resource); }我正在...

c# – 如何模拟扩展类并实现接口的对象?【代码】

我有这门课:public class BaseFoo {public bool BoolProp { get; set; } }public interface IFoo {void Method(); }public class FooClass : BaseFoo, IFoo {public void Method(){// DoSomething} }public class MyClass {IFoo foo; // public MyClass(IFoo foo){this.foo = foo;}public void DoSomething(){if (((FooClass)foo).BoolProp){// yeah}else{//bad}} }我的情况是:void main(){MyClass obj = new MyClass(new FooCla...

C#接口类继承VS纯抽象类【代码】

这种OOP方法注定要失败吗?还是有一些优点? 在我理解抽象类之前,我通过使用接口类(实现了接口的某些方法的常规类)而获得了代码重用的大致相同的好处.例如public interface IMyService {String Helloword1();String Helloword2();String Helloword3(); }public class MyService {public String Helloword1(){return "1";}public String Helloword2(){return "2";}//Helloworld3 is not here so I would be forced to provide imple...

C#UWP该应用程序调用了一个为不同线程编组的接口【代码】

我有一个C#UWP应用程序,其中包含我想要每5秒调用一次的函数.从按钮调用时该函数运行正常,并且Timer每5秒钟调试一次调试控制台….当我从Timer调用该函数时,所有函数都会松动.我明白了: System.Exception未被用户代码处理的HResult = -2147417842Message =应用程序称为为不同线程编组的接口. (来自HRESULT的异常:0x8001010E(RPC_E_WRONG_THREAD))解决方法:我假设你的功能触及了应用程序的UI.触摸UI的任何东西都需要在UI的调度程序线...

如果我扩展一个c#接口,我可以接听电话吗?【代码】

在这个问题中,我提到了Unity3D,但一般适用于c#. Unity3D有一个看起来像这样的接口..public class SomeRobot:MonoBehaviour, IPointerDownHandler{public void OnPointerDown(PointerEventData data){Debug.Log("Gets called whenever someone touches the screen...");}到目前为止没问题. 我制作自己的界面..public interface IFUHandler:IPointerDownHandler{void OnBlah (PointerEventData data);}假设我有一个守护进程或任何为接...

c#-具有通用接口参数的通用接口列表【代码】

我知道有人问过类似的问题,但没有找到与我所做的足够相似的问题. 假设我有这个:public interface IData {string Data { get; set; } } public interface IJob<out T> where T: IData {T JobData { get; } // works because no settervoid Run(); }public class JobAData : IData {public string Data { get; set; } }public class JobA : IJob<JobAData> {public JobAData JobData { get; private set; } // implements IJob's ge...