/// <summary> /// AppVarであれば、Varハンドルに変換。 /// </summary> /// <param name="friendlyConnector">アプリケーションとの接続者。</param> /// <param name="index">引数のインデックス。</param> /// <param name="arg">引数。</param> /// <returns>変換結果。</returns> static object ConvertAppVar(IFriendlyConnector friendlyConnector, object arg, int index) { AppVar appVar = null; { IAppVarSelf selft = arg as IAppVarSelf; if (selft != null) { appVar = selft.CodeerFriendlyAppVar; } } if (appVar == null) { IAppVarOwner owner = arg as IAppVarOwner; if (owner != null) { appVar = owner.AppVar; } } if (appVar == null) { appVar = arg as AppVar; } if (appVar == null) { if ((arg as IDefinition) != null) { throw new FriendlyOperationException(string.Format(CultureInfo.CurrentCulture, Resources.ErrorDefinitionArgument, index + 1)); } return(arg); } //違う変数プールに属する変数は使用できない if (!object.ReferenceEquals(friendlyConnector.Identity, appVar.FriendlyConnector.Identity)) { throw new FriendlyOperationException(string.Format(CultureInfo.CurrentCulture, Resources.ErrorDifferentAppFriendVar, index + 1)); } return(appVar.VarAddress); }
/// <summary> /// Constructor /// </summary> /// <param name="appVar">List<T> in target app.</param> #else /// <summary> /// コンストラクタ /// </summary> /// <param name="appVar">対象プロセス内のList<T> </param> #endif public WPFDependencyObjectCollection(IAppVarOwner appVar) { AppVar = appVar.AppVar; }
/// <summary> /// Helper method to convert an AppVar to a DynamicAppVar and convert it into a dynamic type. /// </summary> /// <param name="src">AppVar Owner.</param> /// <returns>DynamicAppVar.</returns> #else /// <summary> /// IAppVarOwnerClearlyをDynamicAppVarに変換し、dynamic型に入れるためのヘルパメソッドです。 /// </summary> /// <param name="src">AppVar保持クラス。</param> /// <returns>DynamicAppVar。</returns> #endif public static dynamic Dynamic(this IAppVarOwner src) { return(new DynamicAppVar(src.AppVar)); }
/// <summary> /// Enumerate DependencyObject continuing to LogicalTree. /// </summary> /// <param name="start">Start DependencyObject.</param> /// <param name="direction">Run direction.</param> /// <returns>Enumerated DependencyObject.</returns> #else /// <summary> /// LogicalTreeに連なるDependencyObjectを列挙。 /// </summary> /// <param name="start">列挙を開始するDependencyObject。</param> /// <param name="direction">走査方向。</param> /// <returns>列挙されたDependencyObject。</returns> #endif public static IWPFDependencyObjectCollection <DependencyObject> LogicalTree(this IAppVarOwner start, TreeRunDirection direction = TreeRunDirection.Descendants) { var app = (WindowsAppFriend)start.AppVar.App; return(TreeUtility.LogicalTree(start.AppVar, direction)); }
internal static T AttachDriver <T>(IAppVarOwner appVar) where T : class => (T)Activator.CreateInstance(typeof(T), appVar.AppVar);
public static WPFDependencyObjectCollection VisualTree(this IAppVarOwner start, TreeOption option = TreeOption.DepthFirst) { return(VisualTree(start.AppVar, option)); }
/// <summary> /// Enumerate DependencyObject continuing to VisualTree. /// </summary> /// <param name="start">Start DependencyObject.</param> /// <param name="direction">Run direction.</param> /// <returns>Enumerated DependencyObject.</returns> #else /// <summary> /// VisualTreeに連なるDependencyObjectを列挙。 /// </summary> /// <param name="start">列挙を開始するDependencyObject。</param> /// <param name="direction">走査方向。</param> /// <returns>列挙されたDependencyObject。</returns> #endif public static IDependencyObjectCollection VisualTree(this IAppVarOwner start, TreeRunDirection directionSrc = TreeRunDirection.Descendants) => start.AppVar.VisualTree(directionSrc);