Ошибка Невозможно сериализовать вложенный открытый тип.Зачем? - PullRequest
1 голос
/ 21 сентября 2010

В исполнении этого кода есть ошибка Не удается сериализовать вложенный открытый тип «System.Windows.Forms.AxHost + State».

FlashControl my usercontrol

<UserControl x:Class="Adminka.UserControls.FlashControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300"
             xmlns:controls="clr-namespace:MyBlogUserControls;assembly=MyBlogUserControls">
    <Grid>
        <controls:FlashPlayer/>
    </Grid>
</UserControl>

FlashPlayer - пользовательский контроль для просмотра flash

fd - это richtextbox, мне нужно заменить FlashControl на TextBox, но возникает ошибка

error -  Cannot serialize a nested public type 'System.Windows.Forms.AxHost+State'.


    for (int i = 0; i < fd.Blocks.Count; i++)
    {
        var block = (fd.Blocks as BlockCollection).ElementAt(i);
        if (block is Paragraph)
        {
            var p = new Paragraph();
            for (int y = 0; y < ((Paragraph)block).Inlines.Count; y++)
            {
                var inline = ((Paragraph)block).Inlines.ElementAt(y);
                if (inline is InlineUIContainer)
                {
                    var elem = ((InlineUIContainer)inline).Child;
                    if (elem is FlashControl)
                    {
                        elem = new TextBox() { Text = string.Format(format, "FlashControl", (elem as FlashControl).FlashPlayer.Source) };
                    }
                    ((InlineUIContainer)inline).Child = null; \\error occurs here
                }
            }
            block = p;
        }
    }

как заменить FlashControl на TextBox?

1 Ответ

0 голосов
/ 04 февраля 2014

Чтобы обойти это, я переместил объявление типа за пределы своего класса (таким образом, оно больше не было «вложенным»).

...