Próbuję utworzyć instancję klasy bar, ale ja dostaję błąd:C# Tworzenie instancji klasy rodzajowy które dziedziczenie z bazy
"Cannot implicitly convert type
ConsoleApplication1.Bar
toConsoleApplication1.BaseFoo<ConsoleApplication1.baseOutput, ConsoleApplication1.baseInput>
"
Każdy pomysł co mi brakuje lub co mam robić źle? Każda rada będzie miła.
public class baseOutput
{
public string output;
}
public class baseInput
{
public string input;
}
public class ExtendOutput : baseOutput
{
public long id;
}
public class ExtendInput : baseInput
{
public long id;
}
public class BaseFoo<baseOutput, baseInput>
{
protected virtual void DoSmth()
{
}
}
public class Bar : BaseFoo<ExtendOutput, ExtendInput>
{
protected override void DoSmth()
{
base.DoSmth();
}
}
public class Test
{
public void Show()
{
}
private BaseFoo<baseOutput, baseInput> CreateInstance()
{
return new Bar(); // Error right here
}
}
Tylko dlatego 'A: B' i' C: d', nie oznacza, że 'a: B '. Wyszukaj kowariancję w języku C# - pozwoli ci to zrobić, co chcesz, z kilkoma ograniczeniami. –
Rob
Należy trzymać się konwencji kodowania C#; "public class BaseFoo" wprowadza w błąd, ponieważ masz klasy o tych samych nazwach (baseOutput i baseInput). –
enkryptor