У меня есть 3 разные таблицы базы данных, которые имеют одинаковые 5 полей, но у них нет никакого отношения внешнего ключа, поскольку они не сохраняют одно и то же значение на самом деле, но эквивалентны;Например: в таблице CompanyA есть productA, а в CompanyB - productB.
, поэтому у меня есть 3 разные коллекции, включающие 3 поля, которые эквивалентны.Поэтому я хотел бы использовать один класс со свойствами companyType и ProductName и использовать только один метод для приведения этих трех разных коллекций к одному-единственному объекту класса, скажем, ResultClass.
public class ResultClass
{
public EnumCompanyType CompanyType { get; set; }
public string ProductName { get; set; }
public ICollection<ResultClass> ConvertAnything(ICollection<T> collection)
{
//Cast it to ResultClass
return resultClassCollection;
}
}
Так что я могу использовать это как:
ICollection<ProductA> aCollection = GetCompanyAData();
ICollection<ProductB> bCollection = GetCompanyBData();
ConvertAnything(aCollection);
ConvertAnything(bCollection);
Я пробовал «динамический», но на самом деле не знаю принцип (ни у кого нет знаний);поэтому я все испортил, и я думаю, что это не для этого.
Я пытался создать метод расширения, но так как расширение не имеет типа для своего параметра (так как оно использует ICollection), яне могу получить доступ к полям элементов (например, свойств)
Я использую LinqToSql и все термины таблицы базы данных и т. д. относится к этой концепции, ничего больше.
edit:
Думаю, я должен прояснить ситуацию: многочисленные случаи, которых я стараюсь избегать (или я не должен все еще думать), как ниже
public ICollection<ResultClass> ConvertAnythingForA(ICollection<ProductA> collection)
{
foreach(var item in collection)
{
var result = new ResultClass
{
ProductName = item.ProductA,
ProductType = EnumProductType.ProductA
};
resultClassCollection.Add(result);
}
return resultClassCollection;
}
public ICollection<ResultClass> ConvertAnythingForB(ICollection<ProductB> collection)
{
foreach(var item in collection)
{
var result = new ResultClass
{
ProductName = item.ProductB,
ProductType = EnumProductType.ProductB
};
resultClassCollection.Add(result);
}
return resultClassCollection;
}
Заранее спасибо.