コード例 #1
0
ファイル: Form1.cs プロジェクト: JasonL663/RMDEditor
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            ResetData();

            ISurrogateProvider surrogateProvider = treeView1.SelectedNode as ISurrogateProvider;

            if (surrogateProvider == null)
            {
                return;
            }


            object surrogate = surrogateProvider.SurrogateObject;

            propertyGrid1.SelectedObject = surrogate;

            if (surrogate is IDataSurrogate)
            {
                FileDataNode node = treeView1.SelectedNode as FileDataNode;
                ShowHexPanel(surrogate as IDataSurrogate, node.GetFileOffset() + node.GetHeaderSize());
            }

            if (surrogate is IImageSurrogate)
            {
                ShowImageData(surrogate as IImageSurrogate);
            }
        }
コード例 #2
0
            ISerializationSurrogate ISurrogateSelector.GetSurrogate(Type type, StreamingContext context, out ISurrogateSelector selector)
            {
                int maximumPriority = -int.MaxValue;
                ISurrogateProvider maximumProvider = null;

                for (int index = 0; index < this.providers.Count; ++index)
                {
                    var provider = this.providers[index];
                    int priority;
                    if (provider.Handles(type, context, out priority) && priority > maximumPriority)
                    {
                        maximumPriority = priority;
                        maximumProvider = provider;
                    }
                }

                if (maximumProvider != null)
                {
                    selector = this;
                    return(maximumProvider);
                }
                else
                {
                    selector = null;
                    return(null);
                }
            }
コード例 #3
0
 public ReflectionBasedTypeSystem(ISurrogateProvider surrogateProvider, IPathManager pathManager)
 {
     SurrogateProvider = surrogateProvider;
     PathManager = pathManager;
 }
コード例 #4
0
 public SurrogateLogDecorator(ISurrogateProvider inner, TraceListener trace)
 {
     SetField.NotNull(out this.inner, nameof(inner), inner);
     SetField.NotNull(out this.trace, nameof(trace), trace);
 }
コード例 #5
0
 public SurrogateLogDecorator(ISurrogateProvider inner, TraceListener trace)
 {
     SetField.NotNull(out this.inner, nameof(inner), inner);
     SetField.NotNull(out this.trace, nameof(trace), trace);
 }
コード例 #6
0
 public SurrogateSelector()
 {
     _typeSerializationProvider       = new TypeSerializationSurrogate();
     _memberInfoSerializationProvider = new MemberInfoSerializationSurrogate();
 }
コード例 #7
0
 public ReflectionBasedTypeSystem(ISurrogateProvider surrogateProvider, IPathManager pathManager)
 {
     SurrogateProvider = surrogateProvider;
     PathManager       = pathManager;
 }