相关疑难解决方法(0)

获取Autofac中所有已注册的接口实现

我需要从一个实现特定接口IComponentContext的注册列表中获取Type.

我不想要类型的实际实例,而是Type可以获取实例的列表.

我想使用此列表在消息总线上生成订阅.

如何在Autofac中获取所有已注册的接口实现?

c# autofac

6
推荐指数
1
解决办法
6196
查看次数

在C#中查找包含方法的所有类

我想在命名空间中搜索包含某个方法的所有类.如果一个类包含一个方法,那么我想创建一个类的实例并运行该方法.

显然我必须从反思开始,但​​我仍然坚持要去哪里.

编辑:

接口不是我想要的方式.

我正在寻找的是将测试功能嵌入到代码中,但是只有一个调用接口.如果有自检功能,请调用它.如果没有,请忽略它.

c# reflection

5
推荐指数
2
解决办法
2090
查看次数

.Net 4 - 在程序集中包含自定义信息

我正在构建一个可扩展的应用程序,它将在运行时加载其他程序集Assembly.LoadFile().这些附加程序集将包含诸如WPF资源字典(皮肤等),普通资源(Resx)和/或插件类之类的东西.程序集也可以不包含公共类,只包含资源或资源字典.

我正在寻找一种识别程序集的方法,比如友好名称(如"附加外观"或"集成浏览器"),程序集的功能类型(SkinsLibrary,SkinsLibrary | PluginLibrary等)和其他信息(如ConflictsWith(new [] {"SkinsLibrary","BrowserPlugin").

到目前为止,我在命名程序集(*.Skins.*.dll等等)中使用约定.在每个程序集中,我有一个空的虚拟类,它只是一个占位符,用于保存实际(程序集范围)信息的自定义类属性,但这感觉就像一个黑客.是否有一些简化的标准方法来处理这个问题?

我正在开发中央加载器系统,我团队中的其他开发人员将开发这些额外的程序集,所以我想最小化约定和管道细节.

.net c# assemblies

5
推荐指数
1
解决办法
3104
查看次数

返回类实现C#的接口类型

有没有办法获得类实现的接口类型.为了进一步解释这个问题,这就是我的意思.例如:

public interface ISomeInterface
{

}

public class SomeClass : ISomeInterface
{

}

public class SecondClass
{

    ISomeInterface someclass;

    public SecondClass()
    {
        someclass = new SomeClass();
    }

    public Type GetInterfaceInSomeWay()
    {
        //some code
    }

}
Run Code Online (Sandbox Code Playgroud)

我需要填写评论区域.在此先感谢您的帮助,社区!

c# interface class

5
推荐指数
1
解决办法
122
查看次数

XML序列化类似于Json.Net可以做的

我有以下控制台应用程序:

using System;
using System.IO;
using System.Xml.Serialization;
using Newtonsoft.Json;

namespace OutputApp
{

    public class Foo
    {
        public object Value1 { get; set; }
        public string Value2 { get; set; }
    }

    public class Bar
    {
        public int Arg1 { get; set; }
        public double Arg2 { get; set; }
    }

    class Program
    {
        public static Foo CreateFooBar()
        {
            return new Foo
            {
                Value1 = new Bar
                {
                    Arg1 = 123,
                    Arg2 = 99.9
                },
                Value2 = "Test"
            };
        }

        public …
Run Code Online (Sandbox Code Playgroud)

c# xml serialization json json.net

5
推荐指数
1
解决办法
8226
查看次数

在不同版本上以不同方式解析文件

编辑:我已经做了一些关于此的研究,但未能找到解决方案!

我正在从XML文件中读取配置.为某些版本设置配置的布局.此版本位于XML的第一行,易于提取.

我想知道的是,实际解析此文件/获取另一种方法的最佳方法是什么,基于版本(所有4个元素,主要,次要,构建和修订).

现在我想出了这个:

switch (version.Major)
{
    case 0:
        switch (version.Minor)
        {
            case 0:
                switch (version.Build)
                {
                    case 0:
                        switch (version.Revision)
                        {
                            case 0:
                                return VersionNone(doc);
                        }
                        break;
                }
                break;
        }
        break;
}
throw new NotImplementedException();
Run Code Online (Sandbox Code Playgroud)

但我发现这种优雅(根本没有),我觉得有更好的方法可以做到这一点.

有谁可以提供帮助?

c# xml version switch-statement

5
推荐指数
1
解决办法
245
查看次数

Golang-扫描某种类型的所有结构

我是Go语言的初学者。我可能认为从其他语言中提取的东西太传统了,但这就是我想在Go中做的事情。假设以下用例

  1. 我有接口I。此接口具有功能start()和stop()
  2. 有许多实现接口的结构。结构A,结构B,结构C
  3. 当应用程序启动时,我想在结构A,B和C上调用start()
  4. 同样,当应用程序终止时,我想在A,B,C结构上调用stop()。
  5. 我不想在代码中的任何地方硬编码结构A,B和C来调用启动/停止功能。这样一来,当我以后添加struct D(也实现接口I)时,代码将自动运行而无需修改。
  6. 为了实现这一点,我需要能够说“嘿,给我实现接口I的所有类型”。
  7. 如果我得到了A,B和C的一部分,我可以简单地循环遍历并在正确的时间调用正确的方法。

在Go中可行吗?

reflection go

4
推荐指数
1
解决办法
1238
查看次数

创建从IBlahblah继承的所有类的集合

使用反射(我猜?),是否可以创建一个方法来返回从名为IBlahblah的接口继承的所有对象的集合?

public interface IBlahblah;
Run Code Online (Sandbox Code Playgroud)

c# oop reflection

3
推荐指数
1
解决办法
367
查看次数

查找类实现的所有接口

有人能告诉我如何使用C#反射找到类实现的所有接口吗?

就像找到实现特定接口的所有类一样

if(type.getInterface(typeof(IAuto)) != null)
{
   console.writeline(type.name.tostring());
}
Run Code Online (Sandbox Code Playgroud)

c# reflection

3
推荐指数
1
解决办法
105
查看次数

使用 VB.Net 获取实现特定接口的所有类类型

我想加载所有实现该接口的表单IFormLoadSubscriber

界面

Namespace Interfaces
    Public Interface IFormLoadSubscriber

    End Interface
End Namespace
Run Code Online (Sandbox Code Playgroud)

这时候还没有添加任何东西,订阅就够了。

形式

Namespace Forms
    Public Class MainForm
        Inherits Base.Base
        Implements IFormLoadSubscriber

    End Class
End Namespace
Run Code Online (Sandbox Code Playgroud)

Base.Base 是一种强制执行基本行为的形式。

我拥有的

Private Shared Function GetSubscribers() As List(Of Type)
    Dim type = GetType(IFormLoadSubscriber)
    Dim subscribers = AppDomain.CurrentDomain.GetAssemblies() _
                      .Where(Function(x) type.IsAssignableFrom(type)) _
                      .Select(Function(x) x.GetTypes())

    Return subscribers
End Function
Run Code Online (Sandbox Code Playgroud)

问题

上面的代码没有按预期工作,因为它返回一个很大的列表列表,包含各种类型。如果包括我的,手动查找是不可能的。无论如何,这不是我所需要的。

问题

如何更改上述代码,使其仅返回一个类(因为只有一个类实现IFormLoadSubscriber),在本例中是我的 MainForm?

.net vb.net reflection interface winforms

3
推荐指数
1
解决办法
1404
查看次数