我试图找出MEF的构造函数注入属性.我不知道如何告诉它加载构造函数的参数.
这是我正在尝试加载的属性
[ImportMany(typeof(BUsers))]
public IEnumerable<BUsers> LoadBUsers { get; set; }
Run Code Online (Sandbox Code Playgroud)
这是我用来导入程序集的代码.
try
{
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly()));
catalog.Catalogs.Add(new DirectoryCatalog("DI"));
var container = new CompositionContainer(catalog);
container.ComposeParts(this);
}
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试加载的类
[Serializable]
[Export(typeof(BUsers))]
public class EditProfile : BUsers
{
[ImportingConstructor]
public EditProfile(string Method, string Version)
{
Version = "2";
Action = "Edit";
TypeName = "EditProfile";
}
Run Code Online (Sandbox Code Playgroud) 在以下示例中,我可以通过字符串动态创建对象; 但是,我无法获得BASE类的公共方法.我无法将obj转换为BASE因为我不知道在设计时将使用什么泛型.在运行时这样做的任何建议都会很好.
项目A包含A类{T,J>:BASE {T,J>
项目B包含B类{T,J>:BASE {T,J>
Project C包含Class BASE {T,J>
public virtual control {T,J> item
Project Windows Form
cmdGo_Click事件
string dll = textbox1.text // ex"ProjectA.dll"
string class = textbox2.text // ex"A`2 [enuT,enuJ]"
object obj = activator.createinstancefrom(dll,class)