سؤال

أولا، أريد أن أعتذر لغتي الإنجليزية، وليس أقوى جانبي.

لهذه المسألة. في مشروعي الحالي، لدي واجهات للكيانات لي حتى أتمكن من استخدام الصفات دون سرعة الصوت في بلدي entites الرأس وأريد أن أكون قادرة على التحول بسلاسة O / R مخطط في المستقبل. على أي حال، أحصل على خطأ عندما أحاول استخدام بلدي واجهات والطبقات SimpleRepositorys مثل واحدة <>، جميع <> وهلم جرا. أنا أعرف لماذا أحصل على رسالة خطأ ولكن انا بحاجة الى مساعدة لايجاد وسيلة للالتفاف حول ذلك. رسالة الخطأ:

<اقتباس فقرة>   

وSystem.InvalidCastException: الإضافة غير قادر على الكائن المدلى بها من نوع 'SubSonic.DomainObjects.User "لكتابة" Core.DomainObjects.IUser'

والرمز:
public IUser FindById(int id) {
var user = _repository.Single<User>(x => x.Id == id);
return (IUser)user;
}

وكما ترون لقد حاولت أن تجعل العضو للنظام IUser إلى العمل عندما كنت ترغب في إضافة البيانات، ولكن دون جدوى. ما الذي يمكنني القيام به لجعل هذا العمل؟

وشكرا لكم،
تيمي

هل كانت مفيدة؟

المحلول

وأنا لا أعتقد دون سرعة الصوت هي المشكلة في هذه الحالة. وهذا الرمز العمل:

namespace Core.Objects
{
    public interface ICustomer
    {
        int CustomerID { get; set; }
        string Name { get; set; }
    }

}

ورمز للطبقة الفعلية:

namespace Business.Entities
{
        public class Customer: Core.Objects.ICustomer
        {
            public int CustomerID { get; set; }

            [SubSonicStringLength(50)]
            public string Name { get; set; }
        }
}

وأخيرا، فإن وظيفة للحصول على العملاء:

private static ICustomer CustomerByID(int id)
{
      var repos = new SimpleRepository("Test", SimpleRepositoryOptions.None);
      var customer = repos.Single<Customer>(c => c.CustomerID == id);

      return (ICustomer) customer;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top