C# 如何为任务分配值<;事件回调>;类型字段

C# 如何为任务分配值<;事件回调>;类型字段,c#,C#,如果这是一个愚蠢的问题,请原谅我,但如果可能的话,这就是我想要的。我想将一个方法或函数分配到另一类Task类型的字段中 我有一个类似这样的代码 public class Class1 { public async Task ShowDataAsync() { //some code here } } Class1 class1 = new Class1(); public class Class2 { public Task<EventCall

如果这是一个愚蠢的问题,请原谅我,但如果可能的话,这就是我想要的。我想将一个方法或函数分配到另一类Task类型的字段中

我有一个类似这样的代码

public class Class1 {
    public async Task ShowDataAsync() {
        //some code here
    }
}

Class1 class1 = new Class1();


public class Class2 {
    public Task<EventCallback> SomethingAsync { get; set; }
}

Class2 class2 = new Class2 ();
class2.SomethingAsync = class1.ShowDataAsync;
公共类1{
公共异步任务ShowDataAsync(){
//这里有一些代码
}
}
Class1=新的Class1();
公共课2{
公共任务SomethingAsync{get;set;}
}
Class2 Class2=新的Class2();
class2.SomethingAsync=class1.ShowDataAsync;
Visual Studio正在抱怨:
无法将方法组“ShowDataAsync”转换为非委托类型的任务。您打算调用该方法吗?

这应该可以

public class Class2 {
    public Func<Task> SomethingAsync { get; set; }
}
公共类2{
公共函数SomethingAsync{get;set;}
}
但我不建议使用这种设计,因为它令人困惑,并且允许意外地更改方法。

这应该行得通

public class Class2 {
    public Func<Task> SomethingAsync { get; set; }
}
公共类2{
公共函数SomethingAsync{get;set;}
}

但是我不建议使用这种设计,因为它会让人困惑,并且允许意外地更改方法。

ShowDataAsync
的返回类型更改为
Task
@bolkay。你是说我要调用该方法吗?你真的读过我的剧本并理解了吗?我正在分配一个值,但没有运行它。抱歉@user3856437。我想我删除了评论。现在就这么做。一切顺利。将
ShowDataAsync
的返回类型更改为
Task
@bolkay。您是说我要调用该方法吗?你真的读过我的剧本并理解了吗?我正在分配一个值,但没有运行它。抱歉@user3856437。我想我删除了评论。现在就这么做。非常好。我采用了这种设计方法,因为实际上Class2将被传递给另一个,与int、double和string类型的其他Class2字段相同。感谢您的建议,我使用了这种方法,但为什么在另一个对象中调用该方法时,它输出错误:
Microsoft.AspNetCore.Components.Server.Circuits.Circuits主机[111]电路“bElbYkKrMGYWAAoh-Cokdt9RKH4CRHSBxUjLQ7K9BS”中未处理的异常。System.NullReferenceException:对象引用未设置为对象的实例。
以下是调用它的方式:
等待class3.SomethingMethodAsync.invoke()@user3856437我想说,这个错误与我建议的代码完全无关。你到底打什么电话,从哪里打来的。我有一个稍纵即逝的怀疑,保存的方法是从它从未打算调用的地方调用的。这就是我不推荐这种方法的原因,我实际上使用的是c#Blazor。保存的方法是从另一个Blazor组件调用的。我采用这种设计方法是因为实际上Class2将被传递到另一个与其他类型为int、double和string的Class2字段相同的字段。感谢您的建议,我使用了这种方法,但为什么在另一个对象中调用该方法时,它输出错误:
Microsoft.AspNetCore.Components.Server.Circuits.Circuits主机[111]电路“bElbYkKrMGYWAAoh-Cokdt9RKH4CRHSBxUjLQ7K9BS”中未处理的异常。System.NullReferenceException:对象引用未设置为对象的实例。
以下是调用它的方式:
等待class3.SomethingMethodAsync.invoke()@user3856437我想说,这个错误与我建议的代码完全无关。你到底打什么电话,从哪里打来的。我有一个稍纵即逝的怀疑,保存的方法是从它从未打算调用的地方调用的。这就是我不推荐这种方法的原因,我实际上使用的是c#Blazor。正在从另一个Blazor组件调用保存的方法。