コード例 #1
0
        /// <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;
        }
コード例 #3
0
ファイル: AppVarExtensions.cs プロジェクト: bangush/Friendly
        /// <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));
        }
コード例 #4
0
        /// <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));
        }
コード例 #5
0
 internal static T AttachDriver <T>(IAppVarOwner appVar) where T : class
 => (T)Activator.CreateInstance(typeof(T), appVar.AppVar);
コード例 #6
0
 public static WPFDependencyObjectCollection VisualTree(this IAppVarOwner start, TreeOption option = TreeOption.DepthFirst)
 {
     return(VisualTree(start.AppVar, option));
 }
コード例 #7
0
        /// <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);