我已經創建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