Derzeit beim Übergeben eines Objekts, das Schnittstelle X zu einer Schnittstelle Y, die von Schnittstelle XI erbt erhält folgende Fehlermeldung:Fehler beim Übergeben eines Objekts, das Schnittstelle X zu einer Schnittstelle Y erbt, die von Schnittstelle X erbt. In C#
kann nicht implizit Typ 'InterfaceTestApp.Repositories.IUserModel' zu konvertieren 'InterfaceTestApp.Lib.IUserModel'. Eine explizite Konvertierung vorhanden ist (sind fehlt Ihnen eine Besetzung?)
Dies ist mein Test-Setup:
Repository
namespace InterfaceTestApp.Repositories
{
public class UserTestRepo
{
public IUserModel GetUser() => new UserModel() { Id = 1, Name = "Test" };
}
}
namespace InterfaceTestApp.Repositories
{
public interface IUserModel
{
int Id { get; set; }
string Name { get; set; }
}
public class UserModel : IUserModel
{
public int Id { get; set; }
public string Name { get; set; }
}
}
Bibliothek
namespace InterfaceTestApp.Lib
{
interface IUserModelLib : Repositories.IUserModel { }
}
namespace InterfaceTestApp.Lib
{
class Authentication
{
public IUserModelLib AuthenticateUser() => new Repositories.UserTestRepo().GetUser();
}
}
Grundsätzlich was ich Ich versuche hier zu vermeiden, dass Teile des Repo-Projekts einer Anwendung ausgesetzt werden, die das Lib-Projekt verwendet. Wie Sie sehen können, ist die IUserModelLib nur eine Pass-Through-Schnittstelle. Es erbt alles aus dem IUserModel im Repo-Projekt.
Es sollte einen Weg geben, dies zu tun, ohne eine Art manuelles Gießen zu tun. Jede Hilfe wäre willkommen. Vielen Dank!
'IUserModelLib' kann alles tun, was' IUserModel' kann, aber nicht umgekehrt. Sie versuchen, 'IUserModel' von' IUserModelLib AuthenticateUser() 'Methode zurückzugeben, aber' IUserModel' hat keine Funktionalität, die 'IUserModelLib' in seiner eigenen Deklaration haben könnte, daher eine Fehlermeldung. – Sam