PDA

View Full Version : Cannot implicitly convert type 'System.Web.Security.MembershipUser' to 'CustomMembershipUser'



bftarane
چهارشنبه 14 دی 1390, 19:26 عصر
سلام.
خطای زیر رو چه طوری میشه برطرف کرد؟
Cannot implicitly convert type 'System.Web.Security.MembershipUser' to 'CustomMembershipUser'. An explicit conversion exists (are you missing a cast?)

خطا مربوط به قسمت زیر میشه
80171
همانطور که در عکس می بینید زیر GetUser یه خط آبی کشیده
اینم متد GetUser

public System.Web.Security.MembershipUser GetUser(decimal userID)
{

//یه سری کد
}
خوب تحلیل خودم

نوع خروجی Getuser
اینه: System.Web.Security.MembershipUser
و نوع myuser هم اینه:
CustomMembershipUser

خطا هم در این خطه
myUser = GetUser(newUserID);
خوب CustomMembershipUser از Membershipuser به ارث برده شده
و چیزی که به نظر خودم میرسه اینه که چون membershipuser کلاس بیس هست نمی تونه به کلاسی که از خودش (Membershipuser) ارث برده Assign بشه

حالا راه حل چیه؟ لطفاً اگه کسی می دونه راهنمایی کنه.
ممنون

bftarane
چهارشنبه 14 دی 1390, 22:03 عصر
این طوری Cast انجام دادم خطا برطرف شد

myUser = (CustomMembershipUser)GetUser(newUserID);

A.S.Roma
چهارشنبه 14 دی 1390, 22:27 عصر
شما فقط Compile Error رو بر طرف کردید.
اصولا" DownCast همیشه موفقیت آمیز نیست(Type safe نیست) وبایستی قبل از Casting با استفاده از عملگر is شرایط اون چک بشه.

bftarane
چهارشنبه 21 دی 1390, 14:37 عصر
وبایستی قبل از Casting با استفاده از عملگر is شرایط اون چک بشه.
امروز اين جواب رو خوندم. نمي دونم شايد نويسندش ديگه به اين تاپيک سر نزنه.

کسي مي دونه منظور از شرايط چيه؟ و چه جوري با is بايد شرايط را چک کرد؟
ممنون مي شم اگه کسي مي تونه مثالي در اين مورد بزنه يا لينکي معرفي کنه.

A.S.Roma
چهارشنبه 21 دی 1390, 23:02 عصر
می تونید اینجا مطالعه کنید (Downcast)
http://www.c-sharpcorner.com/UploadFile/pcurnow/polymorphcasting06222007131659PM/polymorphcasting.aspx
من کلاس های membership دات نت رو خیلی دقیق نمیشناسم بنابراین شاید هیچوقت نیاز به این احتیاظ در کاربرد شما نباشه اما به هر حال احتیاط شرط عقله D: