我想从任何程序调用{{1}}方法,以匹配基于执行操作时传递的类类型。
所以问题是如何在传递私有方法时解析匿名类型?
我来自:
Create
到我的班级方法:
_productService.Create<Supplier>(_supplier);
答案 0 :(得分:0)
如何将课程改为:
public class ProductService
{
public void Create<T>(T obj)
{
if (typeof(Supplier) == typeof(T))
Supplier(obj); //Call Supplier Method;
else if (typeof(Product) == typeof(Product))
Product(); //Call Product Method;
else
throw new ArgumentOutOfRangeException("Unrecognized type", "type");
}
private void Supplier<T>(T s)
{
//statements
Console.WriteLine("Supplier");
}
private void Product()
{
//statements
Console.WriteLine("Product");
}
}
答案 1 :(得分:0)
这看起来像是一个不太理想的泛型用例。您是否考虑过使用简单的方法重载。请尝试以下方法:
public class Program
{
public static void Main()
{
Console.WriteLine("Hello World");
var service = new ProductService();
service.Create(new Product());
service.Create(new Supplier());
service.Create(new {name="test"});
}
}
public class ProductService
{
public void Create(Product obj)
{
Product();
}
public void Create(Supplier obj)
{
Supplier();
}
public void Create(Object obj)
{
Console.WriteLine("Unknown type called" + obj.GetType().Name);
}
private void Supplier()
{
Console.WriteLine("Supplier called");
}
private void Product()
{
Console.WriteLine("Product called");
}
}
public class Product {}
public class Supplier {}
以上是上面的一个dotnetfiddle:https://dotnetfiddle.net/lzaAba