从不同的 class 在 C# 中将方法作为参数传递
Pass a method as a parameter in C# from a different class
我有一个 class "A",我想通过传递一个函数作为参数来调用另一个不同 class "B" 中的方法。作为参数传递的函数在 class B 中。那么如果我从 class A 调用方法怎么办?
我正在使用 Visual Studio 2008 和 .NET Framework 3.5。
我看过这个 post 但它告诉我们如何通过将另一个方法作为参数传递来调用 main 方法,但是来自同一个 class,没有不同 class.
例如,在 post 下面提供了示例:
public class Class1
{
public int Method1(string input)
{
//... do something
return 0;
}
public int Method2(string input)
{
//... do something different
return 1;
}
public bool RunTheMethod(Func<string, int> myMethodName)
{
//... do stuff
int i = myMethodName("My String");
//... do more stuff
return true;
}
public bool Test()
{
return RunTheMethod(Method1);
}
}
但如何执行以下操作:
public Class A
{
(...)
public bool Test()
{
return RunTheMethod(Method1);
}
(...)
}
public class B
{
public int Method1(string input)
{
//... do something
return 0;
}
public int Method2(string input)
{
//... do something different
return 1;
}
public bool RunTheMethod(Func<string, int> myMethodName)
{
//... do stuff
int i = myMethodName("My String");
//... do more stuff
return true;
}
}
试试这个
public Class A
{
(...)
public bool Test()
{
var b = new B();
return b.RunTheMethod(b.Method1);
}
(...)
}
您需要在 class A
中创建一个 class B
的实例,然后调用该方法,例如,将您的 class A
更改为:
public Class A
{
(...)
private B myClass = new B();
public bool Test()
{
return myClass.RunTheMethod(myClass.Method1);
}
(...)
}
我有一个 class "A",我想通过传递一个函数作为参数来调用另一个不同 class "B" 中的方法。作为参数传递的函数在 class B 中。那么如果我从 class A 调用方法怎么办?
我正在使用 Visual Studio 2008 和 .NET Framework 3.5。
我看过这个 post 但它告诉我们如何通过将另一个方法作为参数传递来调用 main 方法,但是来自同一个 class,没有不同 class.
例如,在 post 下面提供了示例:
public class Class1
{
public int Method1(string input)
{
//... do something
return 0;
}
public int Method2(string input)
{
//... do something different
return 1;
}
public bool RunTheMethod(Func<string, int> myMethodName)
{
//... do stuff
int i = myMethodName("My String");
//... do more stuff
return true;
}
public bool Test()
{
return RunTheMethod(Method1);
}
}
但如何执行以下操作:
public Class A
{
(...)
public bool Test()
{
return RunTheMethod(Method1);
}
(...)
}
public class B
{
public int Method1(string input)
{
//... do something
return 0;
}
public int Method2(string input)
{
//... do something different
return 1;
}
public bool RunTheMethod(Func<string, int> myMethodName)
{
//... do stuff
int i = myMethodName("My String");
//... do more stuff
return true;
}
}
试试这个
public Class A
{
(...)
public bool Test()
{
var b = new B();
return b.RunTheMethod(b.Method1);
}
(...)
}
您需要在 class A
中创建一个 class B
的实例,然后调用该方法,例如,将您的 class A
更改为:
public Class A
{
(...)
private B myClass = new B();
public bool Test()
{
return myClass.RunTheMethod(myClass.Method1);
}
(...)
}