Объявите ваш интерфейс следующим образом:
interface IParser<T>
{
T ParseData(List<byte> data);
}
Можно использовать следующим образом:
public class Parser<T> : IParser<T>
{
public virtual T ParseData(List<byte> data) //virtual is optional
{
//do stuff and return T
//T could be anything, a List, a struct, a class what ever
return default(T);
}
}
Если вам нужен специальный c синтаксический анализатор, вы можете сделать это:
public class StringParser : Parser<string>
{
public override string ParseData(List<byte> data)
{
return string.Empty;
}
}
Или, если вам нужен специфический c синтаксический анализатор для коллекции T
public class CollectionParser<TItem> : Parser<IEnumerable<TItem>>
{
public override IEnumerable<TItem> ParseData(List<byte> data)
{
return Enumerable.Empty<TItem>;
}
}