Во-первых, вам нужен класс Product
и класс ProductClass
:
public class Product
{
public string Name { get; set; }
public Product(string Name)
{
this.Name = Name;
}
}
(Очевидно, вы можете настроить свой класс Product
с другими свойствами и т. Д.)
и ваш ProductClass
класс:
public class ProductClass
{
public void Save(Product value)
{
// Save your product
Console.WriteLine("Save method called successfully with the product " + value.Name);
}
}
Затем вам нужно вызвать свой метод следующим образом:
static void Main()
{
// The namespace of your ProductClass
string NameSpace = "SomeNameSpace.SomeSecondaryNameSpace";
Product toSave = new Product(Name:"myProduct");
// Load your assembly. Where it is doesn't matter
Assembly assembly = Assembly.LoadFile("Some Assembly Path");
// Load your type with the namespace, as you already do
Type productClass = assembly.GetType($"{NameSpace}.ProductClass");
// Type.GetMethod returns a MethodInfo object and not MethodBase
MethodInfo saveMethod = productClass.GetMethod("Save");
// Create an instance of your ProductClass class
object instance = Activator.CreateInstance(productClass);
// Invoke your Save method with your instance and your product to save
saveMethod.Invoke(instance, new object[] { toSave });
Console.ReadKey();
}
Этот код отлично работает для меня ... У вас есть какие-либоошибки с этим?