我有一个IEnumerable<Product>
类型的对象
// var objEnum is of type IEnumerable<Product>
我有一个参数为IEnumerable<IProduct<object>>
的函数
void MethodName (IEnumerable<IProduct<object>> obj) { return; }
我要调用该函数:
MethodName( objEnum )
但是似乎我需要以某种方式将objEnum强制转换为IEnumerable<IProduct<object>>
,我是否需要强制转换?这可能吗?我可以将哪些方法应用于objEnum才能正确通过?
如果NotProduct是
定义的另一种类型class NotProduct
{
}
和IProduct由
定义interface IProduct<T>
{
void IProductMethod(T obj);
}
我的产品类定义如下:
class Product : IProduct<NotProduct>
{
void IProductMethod(NotProduct obj) { return;}
}
我使用我的方法如下:
IEnumerable<Product> productList = new List<Product>();
MethodName(productList);
// return nothing, do nothing, just don't throw an exception
编辑:完整代码
using System;
using System.Collections.Generic;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
IEnumerable<Product> productList = new List<Product>();
NotProduct notProduct = new NotProduct();
MyMethods.MethodName(productList, notProduct);
IEnumerable<AnotherProduct> anotherProductList = new List<AnotherProduct>();
NotAnotherProduct notAnotherProduct = new NotAnotherProduct();
MyMethods.MethodName(anotherProductList, notAnotherProduct);
System.Diagnostics.Debug.WriteLine("Program ran sucessfully");
}
}
public static class MyMethods
{
public static void MethodName(IEnumerable<IProduct<object>> collection, object obj)
{
foreach (IProduct<object> aProduct in collection)
{
if (obj is NotProduct && aProduct is IProduct<NotProduct>)
{
aProduct.IProductMethod(obj);
}
else if (obj is NotAnotherProduct && aProduct is IProduct<NotAnotherProduct>)
{
aProduct.IProductMethod(obj);
}
}
}
}
public interface IProduct<T>
{
void IProductMethod(T t);
}
public class NotAnotherProduct
{
}
public class AnotherProduct : IProduct<NotAnotherProduct>
{
public void IProductMethod(NotAnotherProduct t)
{
return;
}
}
public class NotProduct
{
}
public class Product : IProduct<NotProduct>
{
public void IProductMethod(NotProduct t)
{
return;
}
}
}