예제 #1
0
        internal ReflectBlock(IDataflowBlock block, IBlockInitializer propertySetter)
        {
            if (block == null)
            {
                return;
            }

            var targetType = block.GetType();

            object    debugViewProvider      = null;
            FieldInfo debugViewProviderField = targetType.GetField("m_defaultTarget", ReflectBlockExtensions.DEFAULT_FLAGS);

            if (debugViewProviderField != null)
            {
                debugViewProvider = debugViewProviderField.GetValue(block);
            }
            if (debugViewProvider == null)
            {
                debugViewProviderField = targetType.GetField("m_spscDebugInfo", ReflectBlockExtensions.DEFAULT_FLAGS);
                if (debugViewProviderField != null)
                {
                    debugViewProvider = debugViewProviderField.GetValue(block);
                }
            }
            if (debugViewProvider == null)
            {
                return;
            }

            MethodInfo getDebuggingInformationMethod =
                debugViewProvider.GetType().GetMethod("GetDebuggingInformation", ReflectBlockExtensions.DEFAULT_FLAGS);

            _debugInfo = getDebuggingInformationMethod.Invoke(debugViewProvider, new object[0]);

            InitProperties(block, propertySetter);
        }
 public static IReflectBlock Create <TIn, TOut>(IPropagatorBlock <TIn, TOut> block, IBlockInitializer propertySetter)
 {
     if (block is TransformBlock <TIn, TOut> )
     {
         var reflectView = new ReflectTransformBlock <TIn, TOut>(block as TransformBlock <TIn, TOut>, propertySetter);
         return(reflectView);
     }
     else if (block is BufferBlock <TIn> )
     {
         var reflectView = new ReflectBufferBlock <TIn>(block as BufferBlock <TIn>, propertySetter);
         return(reflectView);
     }
     else
     {
         return(null);
     }
 }