سؤال

هذا السؤال هو ذات الصلة إلى الوظيفة السابقة لي هنا.في الأساس أريد أن حقن داو في كيان أي

public class User
{
   IUserDAO userDAO;
   public User()
   {
         userDAO = IoCContainer.Resolve<IUserDAO>;
   }
  public User(IUserDAO userDAO)
   {
         this.userDAO = userDAO;
   }
   //Wrapped DAO methods i.e
   public User Save()
   {
       return userDAO.Save(this);
   }

}

هنا لو أساليب مخصصة في DAO ثم أنا في الأساس إلى التفاف عليها في كيان الكائن.حتى إذا كان IUserDAO.سجل() أود أن يكون ثم إنشاء مستخدم.سجل() طريقة التفاف عليه.

ما يمكن أن يكون أفضل خلق كائن وكيل حيث أساليب من DAO حيوي تعيين كائن المستخدم.لذا قد يكون شيء يبدو مثل هذا:

var User = DAOProxyService.Create(new User());
User.Save();

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

هذا هو الكثير جدا من confort المنطقة على الرغم من, كنت أتساءل ما يمكن أن تحتاج إلى تحقيق ذلك ؟ هل يمكنني استخدام القلاع الوكيل الحيوية ؟ كما أن C# compiler تكون قادرة على التعامل مع هذا و تعرف عن إضافتها بشكل حيوي الأساليب ؟

لا تتردد في اسمحوا لي أن أعرف إذا كان هذا هو هراء.

تحرير:

ماذا علينا أن نفعل ذلك بطريقة أو بأخرى تعلن DAOProxyService.إنشاء() كما إرجاع كائن المستخدم -- في وقت الترجمة.ويمكن أن يتم هذا مع الأدوية.

هذا ليس صحيحا تماما ، ما أريد أن العودة ليست كائن المستخدم ولكن كائن مستخدم مع إضافتها بشكل حيوي UserDAO الأساليب.كما أن هذه الفئة لا defnied في أي مكان المترجم لا أعرف ما جعل من ذلك.

ما أنا أساسا عودته هو الكائن الجديد الذي يبدو مثل:المستخدم :IUserDAO لذا أعتقد أنا يمكن أن يلقي على النحو المطلوب.ولكن هذا يبدو فوضوي.

يبدو أن ما أبحث عنه هو مشابهة لهذه: Mixins

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

المحلول

كنت في البداية سأقول ما تسأل لا يمكن أن تنجح.ولكن مع بعض التغيير والتبديل ، ونحن قد تكون قادرة على الحصول على عمل.

فار هو مجرد مترجم الميزة.عندما تقول.

 var x = GetSomeValue();

المترجم يقول "'GetSomeValue' بأنها تعود سلسلة لذا يجب على مبرمج من المفترض أن تكتب 'string x = GetSomeValue();'".علما بأن مترجم يقول هذا ؛ هذا التغيير يتم في تجميع الوقت.

كنت ترغب في تحديد فئة (DAOProxyService) والتي أساسا بإرجاع كائن.هذا العمل, ولكن "فار المستخدم" سيكون نفس "كائن المستخدم".

ماذا علينا أن نفعل ذلك بطريقة أو بأخرى تعلن DAOProxyService.إنشاء() كما إرجاع كائن المستخدم -- في وقت الترجمة.ويمكن أن يتم هذا مع الأدوية:

class DAOProxyService
{
     static DAOProxyService<T> Create<T>(T obj) { ......} 
}

نصائح أخرى

ليس تماما التلقائي ، ولكن قد تفكر في استخدام الاختلاف أوليغ Sych طريقة لتوليد الديكور الطبقات.كلما IUserDAO التغييرات (طريقة جديدة ، الخ) فقط تجديد الملف.أفضل من الحفاظ على ذلك يدويا :-)

http://www.olegsych.com/2007/12/how-to-use-t4-to-generate-decorator-classes/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top