InvalidCastExaption unable to cast 'x' to 'x'
От: sidorov18 США  
Дата: 20.12.07 10:17
Оценка:
в общем есть класс работы с xml XmlUtility(http://www.gotdotnet.ru/LearnDotNet/NETFramework/392772.aspx)
есть свой класс, который сохраняется в xml,
если оба класса поместить в exe то все работает нормально,
если их поместить в dll выбивает exeption:
InvalidCastExaption Unable to cast object of type 'myNamespace.myClass' to type 'myNamespace.myClass'
        public static string Obj2XmlStr(object obj)
        {
            if (obj == null) return string.Empty;
            XmlSerializer sr = new XmlSerializer(obj.GetType());
            StringBuilder sb = new StringBuilder();
            StringWriter w = new StringWriter(sb, System.Globalization.CultureInfo.InvariantCulture);
            //Serialize не срабатывает, вылетает InvalidCastExaption
            sr.Serialize(w,
                         obj,
                         new XmlSerializerNamespaces(new XmlQualifiedName[] { new XmlQualifiedName(string.Empty) })
                         );
            return sb.ToString();
        }


вызов метода Obj2XmlStr(object obj) такой

        private string Serialize()
        {
            string xml = XmlUtility.Obj2XmlStr(this);
            return xml;
        }
Re: InvalidCastExaption unable to cast 'x' to 'x'
От: Aen Sidhe Россия Просто блог
Дата: 20.12.07 15:55
Оценка:
Здравствуйте, sidorov18, Вы писали:

S>в общем есть класс работы с xml XmlUtility(http://www.gotdotnet.ru/LearnDotNet/NETFramework/392772.aspx)

S>есть свой класс, который сохраняется в xml,
S>если оба класса поместить в exe то все работает нормально,
S>если их поместить в dll выбивает exeption:
S>InvalidCastExaption Unable to cast object of type 'myNamespace.myClass' to type 'myNamespace.myClass'
S>
S>        public static string Obj2XmlStr(object obj)
S>        {
S>            if (obj == null) return string.Empty;
S>            XmlSerializer sr = new XmlSerializer(obj.GetType());
S>            StringBuilder sb = new StringBuilder();
S>            StringWriter w = new StringWriter(sb, System.Globalization.CultureInfo.InvariantCulture);
S>            //Serialize не срабатывает, вылетает InvalidCastExaption
S>            sr.Serialize(w,
S>                         obj,
S>                         new XmlSerializerNamespaces(new XmlQualifiedName[] { new XmlQualifiedName(string.Empty) })
S>                         );
S>            return sb.ToString();
S>        }
S>


S>вызов метода Obj2XmlStr(object obj) такой


S>
S>        private string Serialize()
S>        {
S>            string xml = XmlUtility.Obj2XmlStr(this);
S>            return xml;
S>        }
S>


Ну если у вас определены два типа с одинаковыми именами но в разных сборках — это будут разные типы.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[2]: InvalidCastExaption unable to cast 'x' to 'x'
От: sidorov18 США  
Дата: 21.12.07 10:02
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:


AS>Ну если у вас определены два типа с одинаковыми именами но в разных сборках — это будут разные типы.


нет, если бы дело было в этом, то exaption был бы что-то вроде Unable to cast object of type 'myNamespace1.myClass' to type 'myNamespace2.myClass'
в любом случае exaption выбивает на строчке
sr.Serialize(w,
obj,
new XmlSerializerNamespaces(new XmlQualifiedName[] { new XmlQualifiedName(string.Empty) })
);
а второй параметр этой строки — object, и случается такое только если один из файлов в длл

может глюк студии...
Re[3]: InvalidCastExaption unable to cast 'x' to 'x'
От: Aen Sidhe Россия Просто блог
Дата: 21.12.07 10:37
Оценка:
Здравствуйте, sidorov18, Вы писали:

S>Здравствуйте, Aen Sidhe, Вы писали:



AS>>Ну если у вас определены два типа с одинаковыми именами но в разных сборках — это будут разные типы.


S>нет, если бы дело было в этом, то exaption был бы что-то вроде Unable to cast object of type 'myNamespace1.myClass' to type 'myNamespace2.myClass'


Вообще-то, нет. Поскольку namespace — это только имя типа.

На досуге попробуйте в двух сборках объявить одинаковые нейспейсы, в них одинаковые по именам классы и посмотрите что получится.

S>может глюк студии...


Сильно сомневаюсь. На 99% глюк в том, что я описал.
С уважением, Анатолий Попов.
ICQ: 995-908
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.