То, что вы пытаетесь достичь, - это создать общий метод, который выполняет итерацию по какому-то определенному типу для выполнения чего-то особенного, и в этом случае это будет из-за общего общего поведения, поэтому нет никакой дополнительной ценности в создании универсальногометод, который перебирает определенные члены, чтобы сделать что-то, если между ними нет ничего общего, поэтому в вашем случае вы можете наложить универсальный тип на условие для реализации интерфейса:
public void DoSomething<T>(List<T> input) where T : ICommonLogic
{
foreach(var v in input)
{
byte[] data = v.Data;
string name = v.Name;
}
}
Или даже чище, добавиврасширение:
public static class CommonLogicExtensions
{
public static DoSomething(this IEnumerable<ICommonLogic> input)
{
foreach(var v in input)
{
byte[] data = v.Data;
string name = v.Name;
}
}
}
Использование обобщений несколько иное, например, создание структуры данных, которая принимает объекты различного типа, такие как List
, но когда дело доходит до определенного или специального поведения, общий интерфейс должениспользовать вместо.