ساخرا مساعدة؟ لا أستطيع أن أجد ما هي المشكلة
سؤال
ولقد واجهة definded مثل هذا:
public interface IDatabase{ void Get<TTypeToFetch> ();}
وعندما أحاول القيام به:
Mockery mockery = new Mockery();
IDatabase db = mockery.NewMock<IDatabase>();
أحصل على الخطأ التالي:
وSystem.TypeLoadException: System.TypeLoadException: التوقيع على الجسم وإعلان في تطبيق الأسلوب لا تتطابق
اقتباس فقرة>ما هو الخطأ؟ (أنا باستخدام Visual Studio 2008 مع nmock2) أرجو أن الجميع تعطيني جوابا، لا بد لي من الانتهاء من هذا في وقت قريب. شكر، لويزا
المحلول
وأنا أعتقد أن هذا قد يكون هناك مشكلة مع NMock، ربما خلل. نوع IDatabase
هو ليس عام، وذلك عند استدعاء وGet<T>
، T
s مختلفة يمكن أن تستخدم في وقت التشغيل. ولكن عندما NMock يعمل على إنشاء وهمية، لا يبدو أن نفهم أن هذا هو الحال، وkablammo - كل توقيع طريقة مختلفة، اعتمادا على المعلمة النوع المتوفر
وحاول القيام بذلك بدلا من ذلك:
public interface IDatabase<T> {
void Get<T>();
}
وبالإضافة إلى ذلك، يجب أن لا نوع Get
يكون T
، وليس void
؟
نصائح أخرى
ولي نفس استثناء مع واجهة بلدي. عندما أقوم بتغيير واجهة ليكون كل شيء العام يعمل على ما يرام.