WCF va Silverlight loyihasi o'rtasida domen modelini almashish muammosi

Men katta hajmdagi Silverlight ilovasini yozyapman. Men hozirda ma'lumotlarni qidirish elementlarini yozyapman.

Men hozir uchrashdim va muammoga duch keldim.

Menda ob'ektlarni saqlaydigan umumiy loyiha bor, bu loyiha ham UI, ham WCF xizmati tomonidan havola qilinadi. UI majburiy maqsadlar uchun INotifyPropertyChanged ni talab qiladi.

Endi WCF bir xil ob'ektlardan foydalanishi kerak, lekin men kompilyator xatosini olaman

""System.ComponentModel.INotifyPropertyChanged" turi havola qilinmagan yig'ilishda belgilangan."

EDIT: Xato WCF xizmatida.

Men bitta ob'ekt sinfini xohlayman, bu muammoni qanday hal qilaman?

http://www.pcbuyersguide.co.za/picture.php?albumid=19&pictureid=1708

Rahmat - Oliver


person Oliver    schedule 17.02.2010    source manba
comment
Oliver, lampochka yondi. Men bu bilan bir muddat shug'ullanmadim. javobimni ko'ring. Va siz savolning nomini WCF va Silverlight loyihasi o'rtasida domen modelini almashish muammosiga o'zgartirishingiz kerak   -  person Sky Sanders    schedule 17.02.2010
comment
Hech kim mening savolimga javob bermadi, shuning uchun javobni qanday belgilashim mumkin....   -  person Oliver    schedule 25.02.2010
comment
@Oliver.. umm... ha. savolingizga javob berildi. ;-) 17-fevral kuni soat 17:00 da. havolani bosing va Silverlight yig'ilishlarida fayllarni ulash ni qidiring.   -  person Sky Sanders    schedule 25.02.2010
comment
Menga hech qanday bosim o'tkazilmadi, lekin javobimdagi so'nggi sharhimda ko'rib turganingizdek, men buni to'liq bajarmadim. Men yaqinlashayotganimizni his qilyapman. Yordamingiz uchun katta rahmat.   -  person Oliver    schedule 10.03.2010


Javoblar (3)


Agar siz ob'ektlaringiz (domeningiz) uchun bir xil manba kodini clr va silverlight loyihasi uchun ishlatishni rejalashtirmoqchi bo'lsangiz, siz 2 ta loyihadan foydalanishingiz kerak bo'ladi, chunki Silverlight assemblies CLR yig'ilishlari bilan bir xil emas.

Yechimingizga Silverlight Class Library loyihasini qo'shing, ism muhim emas, lekin men odatda XXXX_SL dan foydalanaman.

Endi siz clr loyihasidagi barcha manba fayllarni "Mavjud elementni qo'shasiz", lekin ochish yoki tanlash tugmasidagi ochiladigan menyuga e'tibor berasizmi? uni bosing va "havola sifatida qo'shing" yoki u erda nima yozilgan bo'lsa.

Siz hozir ikkala loyiha uchun bir xil manbadan foydalanmoqdasiz va sizning yechimingiz kompilyatsiya qilinadi.

Yo'lda kichik o'zgarishlar bo'lishi mumkin, ammo bu sizni to'g'ri yo'lga soladi.

Bu yerda ba'zi ma'lumotnoma materiallari

person Sky Sanders    schedule 17.02.2010
comment
Kechirasiz, WCF xizmatini kompilyatsiya qilishda xatolik yuz berishi haqida eslatib o'tishni unutibman. Birinchi xabar tahrirlangan - person Oliver; 17.02.2010
comment
@Oliver: yaxshi System.ComponentModel.INotifyPropertyChanged tizimda (mscorlib.dll) yashaydi, shuning uchun siz tizimga havola bo'lmasa, uni qo'shishingiz kerak. bu g'alati bo'lar edi, lekin sodir bo'lishi mumkin. - person Sky Sanders; 17.02.2010
comment
Men System.ComponentModel ni bayonot yordamida qo'shdim va muammo hali ham davom etmoqda. Shuning uchun men post joylashtirdim, chunki bu noto'g'ri ko'rinadi va men nimanidir etishmadimmi deb hayron bo'ldim. - person Oliver; 17.02.2010
comment
Xizmatda System.ComponentModel foydalanish bayonoti mavjud, sinf menga INotifyPropertyChanged interfeysini ko'rishga imkon beradi, lekin men hali ham kompilyatsiya qila olmayapman: "System.ComponentModel.INotifyPropertyChanged" havola qilinmagan yig'ilishda aniqlangan. “Tizim, Versiya=2.0.5.0, Madaniyat=neytral, PublicKeyToken=7cec85d7bea7798e” yig‘ilishiga havola qo‘shishingiz kerak. - person Oliver; 25.02.2010
comment
@Oliver: 2.0.5.0 versiyasi qanday ko'rinishiga e'tibor bering. Bu Silverlight versiyasi. Oddiy .NET versiyasi 2.0.0.0. - person John Saunders; 25.02.2010
comment
@Jon, shuning uchun qanday echim bo'ladi? Men buni o'qib chiqdim netfxharmonics.com/2008/12/. Ushbu muammoni chetlab o'tish uchun silverlight sinf kutubxonasida mscorlib 2.0.0.0 dan foydalana olamanmi? - person Oliver; 25.02.2010
comment
@oliver - Men sizning savolingizga katta qalin havola bilan javob berdim. Men taxmin qilmayapman. clr va silverlight loyihalari o'rtasida manba kodini shunday baham ko'rasiz. Men qildim. qayta-qayta. muvaffaqiyat bilan. - person Sky Sanders; 25.02.2010
comment
@Oliver: yechim @Sky aytganlarini tinglashdir: u buni oldin qilgan. Men faqat versiya farqiga ishora qilyapman. - person John Saunders; 25.02.2010
comment
Sizning maslahatingizga shubha qilmadim, Sky, bu juda qadrlanadi. Menda yangi savol bor, sizning usulingiz INotifyPropertyChanged uchun yaxshi ishlaydi, lekin endi ObservableCollection ni CLR modeliga qanday qo'shishim mumkin? - person Oliver; 04.03.2010
comment
WindowsBase.dll ga havola qo'shing - c:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\WindowsBase.dll - person Sky Sanders; 04.03.2010
comment
Bu CLR modelidagi havola muammosini hal qiladi, lekin ushbu modeldan foydalanayotgan WCF xizmati hozirda ushbu xatoni bildirgan holda xostga ega boʻlmaydi: “System.Windows, Version=2.0.5.0, Culture=neytral, PublicKeyToken=” fayl yoki assembleyni yuklab boʻlmadi. 7cec85d7bea7798e' yoki uning bog'liqliklaridan biri. Bu Silverlight havolasi. Buni qanday hal qilaman? - person Oliver; 10.03.2010
comment
Wcf tomonida siz faqat clr modelingizdan foydalanishingiz kerak va unda kumush nurli havolalar bo'lmasligi kerak. Konvertatsiya aniq amalga oshiriladi, silverlight serializer json-ni avtomatik ravishda silverlight modelingizga o'zgartiradi. - person Sky Sanders; 10.03.2010
comment
Kechirasiz, VS shunchaki o'ynayapti. Men Model ma'lumotnomasini o'chirib tashladim va uni qayta qo'shdim va u baxtli. KATTA RAHMAT! - person Oliver; 10.03.2010
comment
Bu natija berganidan xursandman. Yodda tutishingiz mumkinki, “Tozalash” yechimi havolalar chalkashdek tuyuladigan holatlarda juda foydali. - person Sky Sanders; 10.03.2010
comment
Xabar oxiridagi havola ajoyib! - person Eric J.; 12.05.2010

Siz System.ComponentModel ga kompilyatsiya loyihasida havola qo'shdingizmi

person rerun    schedule 17.02.2010

Men bu yerda CLR sinflarini yaratish imkonini beruvchi usulni topdim. xizmat tomoni va keyin INotifyPropertyChanged va ObservableCollection bilan sinflar yaratilgani uchun xizmat ko'rsatmasidan yaratilgan ob'ektlardan foydalanish mumkin.

Bu mijoz/server chegarasining bevosita muammosini hal qiladi, lekin mening yechimimga mos keladi, chunki yaratilgan ob'ektlardan foydalanish uchun sizga xizmat ma'lumotnomasi kerak. Lekin menda WCF bilan gaplashadigan ProxyClass bor, shuning uchun men bu ob'ekt turlarini ViewModel-ga qaytarish usulini ko'ra olmayapman.

Men ba'zi odamlar mapper sinflarini yozganini ko'rmoqdaman, lekin bu ideal emas, chunki men har bir POCO ob'ekti (mijoz klassi, server DTO klassi, mapper) uchun 3 ta sinf yozishim kerak edi.

Boshqa takliflar bormi?

person Oliver    schedule 25.02.2010