Что я действительно хочу, так это понять, почему при использовании интерфейса в качестве ограничения универсального класса я могу получить доступ к свойству «Nume», которое я определил в классе, который реализует этот интерфейс. Мои вопросы:
- Почему я должен добавить интерфейс в качестве ограничения в общий класс, хотя я уже реализовал его в начальном классе Tr?
-
- Почему я не могу получить доступ к свойству напрямую из класса и почему я могу получить к нему доступ, реализовав интерфейс?
Без интерфейса я не могу получить доступ к свойству из класса Tr, поэтому я реализовал решение, найденное в этом вопросе Stackoverflow, похоже, он работает, но я не могу точно понять, почему.
Я также посмотрел эту документацию Microsoft.
interface GET
{
int Nume { get; }
}
class Tr : GET
{
public int Nume { get; }
public Tr() { }
public Tr(int num)
{
this.Nume = num;
}
}
class Program<Tr> where Tr : GET
{
static List<Tr> lst = new List<Tr>();
public void Test(Tr merge)
{
lst.Add(merge);
foreach (Tr cadt in lst)
{
Console.WriteLine($"Numarul este {cadt.Nume}");
}
}
}
class MainC
{
static void Main(string[] args)
{
Tr cc = new Tr(2);
Program<Tr> cls = new Program<Tr>();
cls.Test(cc);
}
}
Я ожидал, что этот код будет работать без помощи интерфейса, но он завис. Работает с помощью интерфейса.