PDA

View Full Version : سوال: تفاوت HttpPostedFile با HttpPostedFileBase



OmMiD_MtWo
دوشنبه 09 فروردین 1395, 14:31 عصر
سلام خدمت اساتید گرامی
همانطور که از عنوان تاپیک مشخص است، قصد داشتم در مورد تفاوت این دو اطلاعاتی داشته باشم. ممنون میشم اگر راهنمایی کنید.
باتشکر

hakim22
دوشنبه 09 فروردین 1395, 17:41 عصر
به طور کلی کلاسهای که با عبارت Base در انتها نام گذاری میشوند کلاسهای Abstract هستند و مستقیما قابل استفاده نیستند. باید یک کلاس از آنها ارث بری کند تا قابل استفاده شوند.

کلاسهای base یا پایه نقش مادر یا ساختاری دارند. یک مبنا هستند که حداقل خصوصیات مورد نیاز برای یک کلاس در آنها مشخص شود.

کلاس HttpPostedFile یک کلاسی است که از HttpPostedFileBase ارث بری کرده و در واقع یک کلاس Wrapper هست تا بتوان از آن استفاده کرد (new شود)

ممکن است در نسخه های آینده ی دات نت کلاسهای دیگری برای کار با فایل در http اضافه شود ولی همه ی آنها یک مبنای ثابت که همان کلاس بیس دارند که در برنامه نویسی بسیار کاربرد دارد.

OmMiD_MtWo
سه شنبه 10 فروردین 1395, 06:49 صبح
ممنون از پاسخ شما
امکانش هست که یک مثال برای شی ساختن از این دو و کاربرد هر یک ارائه دهید؟ چون تا جایی که اطلاع دارم اگر کلاسی abstract باشد، امکان استفاده از خصوصیتها تا زمانی که در کلاس پایه مجددا override نشوند، وجود ندارد. ولی ما میتوانیم از کلاس HttpPostedFileBase شی تعریف کرده و استفاده کنیم! کمی سردرگم شدم، اگر امکان دارد لطف کنید و مثالی ارائه دهید.
سپاس

OmMiD_MtWo
چهارشنبه 11 فروردین 1395, 13:13 عصر
آقای hakim امکانش هست مثال بزنید؟ ممنون از لطفتتون

RIG000
شنبه 21 فروردین 1395, 17:31 عصر
ممنون از پاسخ شما
امکانش هست که یک مثال برای شی ساختن از این دو و کاربرد هر یک ارائه دهید؟ چون تا جایی که اطلاع دارم اگر کلاسی abstract باشد، امکان استفاده از خصوصیتها تا زمانی که در کلاس پایه مجددا override نشوند، وجود ندارد. ولی ما میتوانیم از کلاس HttpPostedFileBase شی تعریف کرده و استفاده کنیم! کمی سردرگم شدم، اگر امکان دارد لطف کنید و مثالی ارائه دهید.
سپاس
از کلاس abstract نمیشه مستقیم شی ایجاد کرد. شما بایستی برای کار با کلاس httpostedfilebase کلاسی ایجاد کنید و سپس این کلاس رو از httpostedfilebase اینهریت کنید. به این شکل میتونید به خصوصیات موجود در این کلاس ابسترکت دسترسی داشته و سپس return مناسبی رو داشته باشی. برای مثال

classMyTestPostedFileBase:HttpPostedFileBase{

Stream stream;


string contentType;


string fileName;






publicMyTestPostedFileBase(Stream stream,string contentType,string fileName)


{


this.stream = stream;


this.contentType = contentType;


this.fileName = fileName;


}






publicoverrideintContentLength


{


get {return(int)stream.Length;}


}






publicoverridestringContentType


{


get {return contentType;}


}






publicoverridestringFileName


{


get {return fileName;}


}






publicoverrideStreamInputStream


{


get {return stream;}


}






publicoverridevoidSaveAs(string filename)


{


thrownewNotImplementedException();


}}