‫۱۰ سال و ۵ ماه قبل، یکشنبه ۱۴ اردیبهشت ۱۳۹۳، ساعت ۱۶:۵۸
بله،ممنون
جناب نصیری میشه یک مثال در ASP.NET MVC بزنید؟
مثلا پیاده سازی LoggerInterceptor برای اکشن هایی ک یک ActionResult برمیگردانند و درصورت بروز استثناء پیغامی مرتبط ب کاربر نمایش داده شود...
پیاپیش ممنون
‫۱۰ سال و ۵ ماه قبل، شنبه ۳۰ فروردین ۱۳۹۳، ساعت ۱۷:۳۴
- یکی از اهداف مهم AOP این است که به صورت لایه‌ای نامریی عمل کند و هر زمان که نیاز باشد، بتوان بدون کوچکترین تغییری در کدهای اصلی برنامه، کل منطق آن‌را حذف، یا با نمونه‌‌ای دیگر جایگزین کرد. بنابراین دریافت یک مقدار از Interceptor داخل متدی در برنامه، نقض کننده‌ی فلسفه‌ی وجودی این عملیات است.
- اما توسط پارامتر IInvocation و مقداری Reflection، دسترسی کاملی به اطلاعات متد فراخوان هست و در اینجا می‌توان در صورت نیاز، پارامتر و مقداری را نیز به آن ارسال کرد.
- در ASP.NET MVC، مفهوم فیلترها دقیقا پیاده سازی کننده‌ی Interceptor‌های AOP هستند. در اینجا نیز مستقیما اطلاعاتی به فراخوان، در صورت نیاز بازگشت داده نمی‌شود. اما Context جاری در اختیار Interceptor و فیلتر هست. به این ترتیب Interceptor فرصت خواهد داشت به این Context مشترک، اطلاعاتی را اضافه کند یا تغییر دهد. مثلا به لیست خطاهای آن یک خطای اعتبارسنجی جدید را اضافه کند.
‫۱۰ سال و ۵ ماه قبل، شنبه ۳۰ فروردین ۱۳۹۳، ساعت ۱۷:۰۵
ممنون بابت این دوره زیبا؛

ایا روشی توکار برای بازگشت مقدار، از یک Interceptor به متد اجراشونده هست؟

بعنوان مثال رشته ای که Log می‌شود رو بعنوان مقدار بازگشتی در متد اجرا شونده دریافت کنیم؟
باتشکر
در این فریم‌ورک جهت نمایش پیغام به کاربر کلاس SendMsg تدارک دیده شده است. نحوه استفاده از آن به شکل زیر است:
ابتدا در کلاس AddNewUserViewModel یک فیلد خصوصی از نوع کلاس SendMsg ایجاد کنید
private SendMsg _sendMsg = new SendMsg();
سپس در متد حذف، تابع ShowMsg آن را فراخوانی کنید
private void doDelete()
{
    _sendMsg.ShowMsg(new AlertConfirmBoxModel
    {
        Errors = new List<string> { "آیا کاربر انتخاب شده حذف شود؟" },
        ShowConfirm = Visibility.Visible,
        ShowCancel = Visibility.Visible
    },
    confirmed: input => delete(input));
}

private void delete(AlertConfirmBoxModel input)
{
    UsersList.Remove(SelectedItem);
}
‫۱۰ سال و ۶ ماه قبل، شنبه ۲۳ فروردین ۱۳۹۳، ساعت ۱۹:۳۱
در ابتدای متن توضیح دادم: «همچنین باید دقت داشت که تمام زبان‌های پشتیبانی شده توسط FTS در حالت Semantic Search پشتیبانی نمی‌شوند. برای بررسی این مورد، دو کوئری ذیل را اجرا نمائید». فقط زبان‌هایی که حاصل گزارش زیر هستند Semantic Search در مورد آن‌ها صادق است:
(زبان عربی در FTS پشتیبانی می‌شود؛ اما نه در Semantic Search) 
SELECT * FROM sys.fulltext_semantic_languages ORDER BY name