كيفية تحديد قيد النوع والميراث عند إعلان الفصل؟
-
12-12-2019 - |
سؤال
لقد حصلت على abstract
الفئة التي لديها قيد النوع.لكنني أريد أيضًا أن أجعل abstract
فئة تنفيذ واجهة.
على سبيل المثال:
public abstract class PostEvent<TPost> : IDomainEvent, where TPost : Post, new()
الذي لا يجمع.
لا أريد هذا:
public abstract class PostEvent<TPost> where TPost : Post, IDomainEvent, new()
لأن هذا يعني TPost : IDomainEvent
أريد PostEvent : IDomainEvent
ما هو بناء الجملة؟
المحلول
جرب هذا:
public abstract class PostEvent<TPost> : IDomainEvent where TPost : Post, new()
لا تريد فاصلة بين قائمة الواجهة والقيود العامة.
نصائح أخرى
أنت بحاجة إلى تنفيذه فعليًا (لا يمكنك ترك التنفيذ بحتة إلى أنواع الخرسانة - يجب أن تعرف من أين تبدأ):
public abstract class PostEvent<TPost> : IDomainEvent
where TPost : Post, new()
{
public abstract void SomeInterfaceMethod();
}
يمكنك أيضًا استخدام تطبيق واجهة صريح وطريقة مجردة محمية إذا كنت لا تريد Otis على واجهة برمجة التطبيقات العامة:
public abstract class PostEvent<TPost> : IDomainEvent
where TPost : Post, new()
{
protected abstract void SomeInterfaceMethod();
void IDomainEvent.SomeInterfaceMethod() {
SomeInterfaceMethod(); // proxy to the protected abstract version
}
}
لا تنتمي إلى StackOverflow