我需要从一个实现特定接口IComponentContext的注册列表中获取Type.
我不想要类型的实际实例,而是Type我可以获取实例的列表.
我想使用此列表在消息总线上生成订阅.
如何在Autofac中获取所有已注册的接口实现?
我想在命名空间中搜索包含某个方法的所有类.如果一个类包含一个方法,那么我想创建一个类的实例并运行该方法.
显然我必须从反思开始,但我仍然坚持要去哪里.
编辑:
接口不是我想要的方式.
我正在寻找的是将测试功能嵌入到代码中,但是只有一个调用接口.如果有自检功能,请调用它.如果没有,请忽略它.
我正在构建一个可扩展的应用程序,它将在运行时加载其他程序集Assembly.LoadFile().这些附加程序集将包含诸如WPF资源字典(皮肤等),普通资源(Resx)和/或插件类之类的东西.程序集也可以不包含公共类,只包含资源或资源字典.
我正在寻找一种识别程序集的方法,比如友好名称(如"附加外观"或"集成浏览器"),程序集的功能类型(SkinsLibrary,SkinsLibrary | PluginLibrary等)和其他信息(如ConflictsWith(new [] {"SkinsLibrary","BrowserPlugin").
到目前为止,我在命名程序集(*.Skins.*.dll等等)中使用约定.在每个程序集中,我有一个空的虚拟类,它只是一个占位符,用于保存实际(程序集范围)信息的自定义类属性,但这感觉就像一个黑客.是否有一些简化的标准方法来处理这个问题?
我正在开发中央加载器系统,我团队中的其他开发人员将开发这些额外的程序集,所以我想最小化约定和管道细节.
有没有办法获得类实现的接口类型.为了进一步解释这个问题,这就是我的意思.例如:
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)
我需要填写评论区域.在此先感谢您的帮助,社区!
我有以下控制台应用程序:
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) 编辑:我已经做了一些关于此的研究,但未能找到解决方案!
我正在从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)
但我发现这种优雅(根本没有),我觉得有更好的方法可以做到这一点.
有谁可以提供帮助?
我是Go语言的初学者。我可能认为从其他语言中提取的东西太传统了,但这就是我想在Go中做的事情。假设以下用例
在Go中可行吗?
使用反射(我猜?),是否可以创建一个方法来返回从名为IBlahblah的接口继承的所有对象的集合?
public interface IBlahblah;
Run Code Online (Sandbox Code Playgroud) 有人能告诉我如何使用C#反射找到类实现的所有接口吗?
就像找到实现特定接口的所有类一样
if(type.getInterface(typeof(IAuto)) != null)
{
console.writeline(type.name.tostring());
}
Run Code Online (Sandbox Code Playgroud) 我想加载所有实现该接口的表单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?