‫۱۰ سال و ۸ ماه قبل، سه‌شنبه ۱۵ بهمن ۱۳۹۲، ساعت ۱۸:۰۸
برای این که مطمئن بشم که آیا DI رو به صورت صحیح پیاده کردم یا نه آیا چک لیستی یا روشی برای این کار هست؟
برای مثال الان دارم فکر میکنم که چطور این کارو تو winForms میشه انجام داد، پس از انجام ، آیا کارم درست هست یا نه؟
روشی برای حصول اطمینان هست؟
‫۱۰ سال و ۸ ماه قبل، سه‌شنبه ۱۵ بهمن ۱۳۹۲، ساعت ۱۷:۴۳
با سلام؛ یعنی اگر من در یک برنامه mvc و در یک کنترلر، از IoC container مستقیما برای تولید اشیا استفاده کنم در واقع از تزریق وابستگی‌ها استفاده نمیکنم و دارم از الگوی Service locator استفاده میکنم؟
public partial class Test : Controller
    {
        private IUnitOfWork _uow;
        private IService _Service;

        public Test()
        {
            _uow = ObjectFactory.GetInstance<IUnitOfWork>();
            _userService = ObjectFactory.GetInstance<IService>();
        }

    // Other Methods
}
مثلا در کلاس Service که اصلا از IOC container مستقیم استفاده نشده، و هنگام ایجاد شی در کنترلر به صورت خودکار وابستگیش تامین میشود ، الگوی تزریق وابستگی‌ها درست پیاده شد؟
‫۱۰ سال و ۸ ماه قبل، سه‌شنبه ۸ بهمن ۱۳۹۲، ساعت ۰۲:۳۵
کار این کلاس، در مثالی که زده شد (انتهای مطلب) این است که UsersService درخواستی را به صورت خودکار وهله سازی و قابل استفاده می‌کند؛ بدون اینکه جایی اثری از StructureMap در این فایل code behind دیده شود.
‫۱۰ سال و ۸ ماه قبل، سه‌شنبه ۸ بهمن ۱۳۹۲، ساعت ۰۲:۱۹
در مطلب « بایدها و نبایدهای استفاده از IoC Containers  » عنوان شد که تا حد ممکن نباید کدهای مرتبط با یک IoC Container داخل کدهای متداول ما ظاهر شوند. کار کلاس StructureMapModule تمیز کردن فایل‌های code behind از وجود IoC Container مورد نظر است.
زمانیکه $.prompt نمایان می‌شود، this ذکر شده به قسمتی از طرحبندی خود این افزونه اشاره می‌کند و نه لایه زیرین آن که جدول ما است. بنابراین سه سطر مربوط به یافتن Id و سطر جاری را پیش از فراخوانی $.prompt قرار دهید.  
سلام. ابتدا از مطلب خوبتون تشکر میکنم . واقعا بسیار جالب و کاربردیه .
من از این مثال استفاده کردم و درست کار میکنه ولی وقتی میخوام  از کاربر تایید برای حذف بگیرم ( با استفاده از  jquery-impromptu ) یه مشکلی پیش میاد .
حالت عادی که Id مربوط به پیغاممون درست انتخاب میشه.


ولی وقتی تایید میگیرم

موس روی messageid هستش و نوشته‌ی قرمز مقدار id هستش که قطعا درست نیست.

مسلما مشکل از این خطه که id رو انتخاب میکنه

var span = $(this);
var messageid = span.attr('id').replace('row-', '');

ولی نمیدونم چجوری id رو انتخاب کنم!

اینم کدها که تایید کاربرو بهش اضافه کردم

<script type="text/javascript">
        $(function() {
            $('span[id^="row"]').click(function() {
                $.prompt("آیا برای حذف اطلاعات موجود اطمینان دارید ؟",
                    {
                        title: 'Title',
                        buttons: { "بله": true, "خیر": false },
                        focus: 2,
                        submit: function(e, v, m, f) {
                            if (!v) {
                                return;// وقتی کاربر تایید نکرد
                            } else {// وقتی کاربر تایید کرد
                                var span = $(this); 
                                var messageid = span.attr('id').replace('row-', '');
                                var tableRow = span.parent().parent();
                                $.ajax({
                                    type: "POST",
                                    url: '@postUrl',
                                    data: JSON.stringify({ id: messageid }),
                                    contentType: "application/json; charset=utf-8",
                                    dataType: "json",
                                    complete: function(xhr, status) {
                                        var data = xhr.responseText;
                                        if (xhr.status == 403) {
                                            window.location = "/login";
                                        } else if (status === 'error' || !data || data == "nok") {
                                            var noty = window.noty({ text: "خطایی رخ داده", type: 'error', layout: 'center', timeout: 2500 });
                                        } else {
                                            $(tableRow).fadeTo(600, 0, function() {
                                                $(tableRow).remove();
                                            });
                                            var noty = window.noty({ text: "پیغام حذف شد", type: 'information', layout: 'center', timeout: 2500 });
                                        }
                                    }                            
                                });

                            }

                        }                
                    });
            
        });
        });
    </script>