CodeDom — вызов универсального метода
Вопрос
кто-нибудь знает способ вызвать общий метод базового класса с помощью CodeDom?
У меня нет проблем с вызовом стандартного метода, но я не могу найти решение для вызова общего метода.
Код, который я использую для вызова стандартного метода базового класса GetInstance:
CodeAssignStatement assignStatement = new CodeAssignStatement(
new CodeVariableReferenceExpression("instance"),
new CodeMethodInvokeExpression(
new CodeThisReferenceExpression(),
"GetInstance",
new CodeExpression[] { new CodeVariableReferenceExpression("instance") }
));
Решение
Вы можете найти свой ответ здесь в MSDN:
прокрутите вниз до примера C# (CodeDomGenericsDemo).
Создается общий метод:
public virtual void Print<S, T>()
where S : new()
{
Console.WriteLine(default(T));
Console.WriteLine(default(S));
}
и позже выполнено в примере:
dict.Print<decimal, int>();
Код для генерации вызова метода:
methodMain.Statements.Add(new CodeExpressionStatement(
new CodeMethodInvokeExpression(
new CodeMethodReferenceExpression(
new CodeVariableReferenceExpression("dict"),
"Print",
new CodeTypeReference[] {
new CodeTypeReference("System.Decimal"),
new CodeTypeReference("System.Int32"),}),
new CodeExpression[0])));
(Вместо CodeVariableReferenceExpression вы бы использовали CodeThisReferenceExpression() или CodeBaseReferenceExpression()), не уверен, что вы имеете в виду именно это, вызывая стандартный метод базового класса.
Не связан с StackOverflow