c# 4.0 - 从 (get, set ) 调用委托 属性 c#



我需要帮助才能使用以下代码来调用Method1。没有编译问题,但在运行代码时不会调用Method1。我在网上搜索了很多,但没有找到解决方案。

public static class Test12
{
public static Test12.ByteDelegate PropertyValue { get; set; }
public delegate byte[] ByteDelegate(byte p1, byte[] p2);        
}

上面的类必须像这样使用:

class Abc
{
internal void Stat()        
{              
    Test12.Propertyvalue = Method1;                       
}
private byte[] Method1(byte p1, byte[] p2)
{
    byte[] abc = ...;
    return abc;
}
}

如果我在 stat 方法中创建委托的实例并像这样使用它:

Method1(param1,param2);

然后调用了Method1,但是如果我像这样使用它:

Test12.PropertyValue = Method1(param1,param2);

编译器抛出错误,指出缺少类型转换。任何人都可以告诉我如何使用Test12.PropertyValue = Method1;调用Method1吗?

您会收到一条错误消息,因为当您尝试将该方法分配给委托时,您正在使用以下代码行:

 test12.propertyvalue = method1(param1, param2);

它首先调用method1,然后它返回的内容试图分配给委托,并且出现错误消息,指出您无法将字节数组分配给委托,如@Jon注释中所述。它们是不同的类型,因此您无法将一个分配给另一个,至少在没有转换或转换方法的情况下不能。

为了从委托调用method1,在执行以下操作分配之后:

 test12.propertyvalue = method1;

您可以简单地调用委托,因为它将是您的方法:

 test12.propertyvalue(param1 , param2);

最新更新