我正在尝试建立一个图书馆,并且我正在尝试了解如何按照我想要的方式实现它。
我创建了一个极简示例来向您展示我正在尝试做的事情。
using System;
namespace example
{
public class Car
{
public int Price;
public string ModelName;
public Boolean Sold;
public delegate void SellEventHandler(string str);
public static event SellEventHandler _OnSell;
public void OnSell(string str)
{
Console.WriteLine("event was fired");
}
public Car(int price, string modelname)
{
Price = price;
ModelName = modelname;
Sold = false;
_OnSell = OnSell;
}
}
public class Program
{
static void Main()
{
Car _car = new Car(6000, "audi");
_car._OnSell += Car_OnSell;
}
public void Car_OnSell(string message)
{
Console.WriteLine(message);
}
}
}
尽管我还没有实施when该事件将被调用(当Sold
的财产_car
更改),我想执行OnSell(string str)
的方法Car
类(打印“事件被触发”),之后,我想执行Car_OnSell
函数(参见代码_car.OnSell += Car_OnSell
)
希望您明白我在这里想做什么。现在我得到的错误是Member 'example.Car._OnSell' cannot be accessed with an instance reference; qualify it with a type name instead
在线上_car.OnSell += Car_OnSell;
。但是我不确定我是否朝着正确的方向前进。
我想我明白你在做什么,这就是我会怎么做的。
- 不要在班级里举办活动。相反,创建一个“Sell”方法来执行类通常会执行的任何操作(例如 set
Sold == true
),但首先检查客户端是否连接了您的_OnSell
事件,并首先触发该事件。您可能希望为客户提供某种方式来取消销售_OnSell
事件也是如此。
- 您还需要让您的
Car_OnSell
静态的,因为你是从静态方法连接它的(Main
)。这是因为非静态方法需要类实例才能访问它。
这是一个例子:
static void Main()
{
var car = new Car(6000, "audi");
car._OnSell += Car_OnSell;
car.Sell(string.Format("Selling the car: {0}", car.ModelName));
}
public static void Car_OnSell(string message)
{
Console.WriteLine(message);
}
public class Car
{
public int Price { get; set; }
public string ModelName { get; set; }
public Boolean Sold { get; set; }
public delegate void SellEventHandler(string str);
public event SellEventHandler _OnSell;
public void Sell(string str)
{
if (_OnSell != null)
{
_OnSell(str);
}
this.Sold = true;
}
public Car(int price, string modelname)
{
Price = price;
ModelName = modelname;
Sold = false;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)