Reputation: 41
I couldn't find the answer in the internet so I gonna ask for your help. I have an abstract class:
public abstract class AbstractClass
{
String Name { get; }
}
Child Class 1:
public class ApplicationDetailsModel : AbstractClass
{
// This will implement unique properties
}
And each class that implements IComponent will implement a child of "AbstactClass".
An example implementation:
public class ExampleClass : IComponent
{
public ApplicationDetailsModel DetailsModel;
}
And an interface
public interface IComponent : IPageViewModel
{
AbstractClass DetailsModel { get; }
}
This example does not compile because the interface forces to implement
AbstractClass DetailsModel = new ApplicationDetailsModel();
Is there a correct way to force an implementation of a child property of a specific abstract class in an interface?
Upvotes: 3
Views: 1038
Reputation: 3017
Make your interface generic with a constraint
public interface IComponent<T> : IPageViewModel
where T : AbstractClass
{
T DetailsModel {get;}
}
By example:
public class ExampleClass : IComponent<ApplicationDetailsModel>{
{
public ApplicationDetailsModel DetailsModel { get; private set; }
}
Upvotes: 6