我已经创建usercontrol实例到单独的appdomain并将其转换为INativeHandleContract作为每个插件框架指南,我能够将框架实例的引用传递到主机应用程序域。当我将主体应用程序appdomain中的INativeHandleContract转换回UIElement时,我无法将UIElement转换为我的自定义接口类型。无法将'MS.Internal.Controls.AddInHost'转换回类型'System.Windows.Controls.UserControl'或将其转换为我的自定义界面
任何人都可以告诉我是否可以将Framework元素转换为userControl或将其转换为我的自定义界面?
这里是代码的一部分:
public INativeHandleContract GetControl(string AssemblyName, string strFullNamespaceName)
{
var assembly = Assembly.LoadFrom(m_strAssemblyDirectory + AssemblyName);
var type1 = typeof(IUPiAssemblyProcedure);
var type2 = typeof(IUPiCardProcedure);
var type3 = typeof(IUPiDatabaseFrame);
var type4 = typeof(IUPiUserFrame);
var t = from T in assembly.GetTypes() where type1.IsAssignableFrom(T) || type2.IsAssignableFrom(T) || type3.IsAssignableFrom(T) || type4.IsAssignableFrom(T) select T;
if (t.Count<Type>() == 0) return null;
var tName = t.First<Type>().FullName;
return FrameworkElementAdapters.ViewToContractAdapter((FrameworkElement)assembly.CreateInstance(tName));
}
public void LoadUserControl(INativeHandleContract contract)
{
var uControl = FrameworkElementAdapters.ContractToViewAdapter(contract);
var t = uControl.GetType();
t.GetMethod("methodName");
...
}
我的目标是在调用自定义的接口定义了一些方法,通过我已经装在装配的类型之一来实现。
问候 蒂霍米尔Blagoev