jjzjj

IMyInterface

全部标签

xml - 如何从同一程序集的多个版本配置 Unity?

我有多个版本的程序集,每个版本都实现了一个名为RequestHandler的类型(带有IRequestHandler)。我想使用“v1.1”或“v1.2”等别名配置每个可用版本的统一性。在运行时请求由正确的版本处理,使用别名创建正确版本的程序集的实例。这需要配置驱动。我不知道如何配置Unity来实现这个目标?有什么想法吗? 最佳答案 如果通过配置文件进行配置就很简单了:并且,在客户端:publicclassMyClient{[Dependency("v1.1")]publicIMyInterfaceMyVal{get;set;}}

c# - 自引用接口(interface)

这是我想做的事情:InterfaceIMyInterface{ListGetAll(stringwhatever)}因此实现它的类必须有一个返回它们自己类型的列表的函数。这可能吗?我知道-从技术上讲-一个实现它的类可以返回一个实现它的其他类的列表,不一定是同一个类,但我可以接受它,即使它并不理想。我已经试过了,但是我无法让实现类正确地实现这个方法。 最佳答案 实现这个接口(interface)很简单:publicclassMyInterfaceImpl:IMyInterface{publicListGetAll(stringwhat

c# - IEnumerable<IMyInterface> 隐式来自 Class[] 但不是来自 Struct[]。为什么?

给定:publicinterfaceIMyInterface{}publicclassMyClass:IMyInterface{publicMyClass(){}}publicstructMyStruct:IMyInterface{privateint_myField;publicMyStruct(intmyField){_myField=myField;}}为什么我可以写:IEnumerablemyClassImps=new[]{newMyClass(),newMyClass(),newMyClass()};但不是:IEnumerablemyStructImps=new[]{newM

c# - 通过 MEF 容器处理组件?

我使用MEF将接口(interface)映射到实现类作为DI的一种方式。例如,我对接口(interface)使用Import属性,对实现类使用Export属性。我的理解是MEF框架将创建实现类实例并将它们保存在MEF的容器中以供使用或自动注入(inject)。我的一些实现类实现了IDispose接口(interface)。由于实例是由MEF创建的,我想我应该让MEF在MEF退出时调用组件的Dispose方法(如果它们是一次性的)。例如,在我的应用程序中,我持有对MEF容器的引用。当应用程序终止时,我调用容器的Dispose方法。问题是我的组件的Dispose从未被调用。以下是一些关于导

c# - 使用自动属性显式实现接口(interface)

有没有办法使用自动属性显式实现接口(interface)?例如,考虑这段代码:namespaceAutoProperties{interfaceIMyInterface{boolMyBoolOnlyGet{get;}}classMyClass:IMyInterface{staticvoidMain(){}publicboolMyBoolOnlyGet{get;privateset;}//line1//boolIMyInterface.MyBoolOnlyGet{get;privateset;}//line2}}此代码编译。但是,如果您将第1行替换为第2行,它不会编译。(并不是说我需要让

c# - 限制方法中泛型类型的目的是什么?

我很难理解为什么这样做会有益:(示例是一个类)staticvoidPrintResults(Tresult)whereT:Sample将Sample传递给方法不是更好吗?staticvoidPrintResults(Sampleresult) 最佳答案 我建议避免使用非泛型语法的泛型类型,例如您给出的示例。但是,还有其他有用的案例。例如,一般指定返回类型:staticTCreate()whereT:Sample,new(){returnnewT();}//CallingcodeSamplesample=Create();代替stat

c# - 如何查找方法是否正在实现特定接口(interface)

我有一个方法的MehtodBase,我需要知道该方法是否是特定接口(interface)的实现。所以如果我有以下类(class):classMyClass:IMyInterface{publicvoidSomeMethod();}实现接口(interface):interfaceIMyInterface{voidSomeMethod();}我希望能够在运行时(使用反射)发现某个方法是否实现了IMyInterface。 最佳答案 您可以使用GetInterfaceMap为此。InterfaceMappingmap=typeof(MyC

C#:通过显式指定接口(interface)来覆盖属性

在尝试覆盖ICollection.IsReadOnly的显式接口(interface)实现时来自Collection的属性(property)类,我遇到了一些文档,指出显式接口(interface)成员实现不能被覆盖,因为它们不能有诸如virtual之类的修饰符。或abstract.在MSDN他们甚至指定如何通过创建另一个由显式接口(interface)成员实现调用的抽象或虚拟成员来使显式接口(interface)成员实现可用于继承。到目前为止没有问题。但后来我想知道:为什么在C#中可以通过显式指定接口(interface)来覆盖任何显式实现的接口(interface)成员?例如,假设

c# - 只允许为特定类实现接口(interface)

是否可以只允许一些特定的类来实现一个接口(interface)?假设我创建了接口(interface)IMyInterface并且我只希望派生自UserControl的类能够实现我的接口(interface)。这可能吗? 最佳答案 你不能,但你可以通过向你的接口(interface)添加一个Control属性来实现类似的东西,并且按照惯例让所有的实现返回this。不能解决您的问题,但会让实现者思考接口(interface)是否真的属于那里。还允许界面的用户以类型安全的方式检索控件而无需强制转换。interfaceIMyInterfa

c# - 使用Unity拦截所有对IMyInterface.SomeMethod的调用

我正在尝试学习Unity拦截器,而且我正在努力学习。假设我有一个这样的界面:publicinterfaceIMyInterface{voidSomeMethod();}我有未知数量的类实现了这样的接口(interface):publicclassSpecificClass1:IMyInterface{publicvoidSomeMethod(){Console.WriteLine("MethodCalled");}}我正在寻找一种方式来表达“对于IMyInterface的所有实例(我不想枚举它们),当调用SomeMethod时运行我的拦截器。给我带来麻烦的是类的非枚举。(如果你能列举出