문제
누구든지 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 () 또는 CodeBasereErferenceExpression ()을 사용하므로 표준 기본 클래스 방법을 호출함으로써 의미하는지 확실하지 않습니다.
제휴하지 않습니다 StackOverflow