Tôi đang cố gắng để tạo ra thể hiện của lớp Bar nhưng tôi nhận được một lỗi:C# Tạo Instance của lớp Generic mà thừa kế từ cơ sở
"Cannot implicitly convert type
ConsoleApplication1.Bar
toConsoleApplication1.BaseFoo<ConsoleApplication1.baseOutput, ConsoleApplication1.baseInput>
"
Bất kỳ ý tưởng những gì tôi đang thiếu hoặc những gì tôi làm sai? Mọi lời khuyên sẽ tốt đẹp.
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
}
}
Chỉ vì 'A: b' và 'C: D', không có nghĩa là' Một: B '. Tra cứu hiệp phương sai trong C# - nó sẽ cho phép bạn làm những gì bạn đang cố gắng, với một vài hạn chế. –
Rob
Hãy gắn bó với quy ước mã hóa C#; "public class BaseFoo" là gây hiểu nhầm vì bạn có các lớp có cùng tên (baseOutput và baseInput). –
enkryptor