【发布时间】:2016-08-01 11:25:27
【问题描述】:
我在制作活动时遇到了一些麻烦。我收到错误'IStregsystem.UserBalanceWarning': event must be of delegate type,
但我无法弄清楚到底是什么问题。
我的界面IStregsystem 有event UserBalanceNotification UserBalanceWarning; 行,我必须实现它。
我的事件类看起来像这样(我现在只是测试):
using System;
namespace Eksamensopgave2016
{
public class UserBalanceNotification
{
public delegate void UserBalanceMessage(User user, decimal balanceDifference);
public event UserBalanceMessage UserBalanceWarning;
public User user { get; set; }
private decimal _balanceDifference { get; }
public void OnUserBalanceWarning()
{
if (UserBalanceWarning != null)
{
UserBalanceWarning(user, _balanceDifference);
}
else
{
Console.WriteLine("Event fired!");
}
}
public UserBalanceNotification(User user, decimal balanceDifference)
{
_balanceDifference = balanceDifference;
SetValue(user, balanceDifference);
}
public void SetValue(User user, decimal balanceDifference)
{
if (balanceDifference != 0)
{
user.Balance += balanceDifference;
if (user.Balance < 50)
{
OnUserBalanceWarning();
}
}
}
}
}
我只是对事件有点不确定。 线条
if (UserBalanceWarning != null)
{
UserBalanceWarning(user, _balanceDifference);
}
UserBalanceWarning 是一个方法,还是一个属性?
感谢您的帮助,谢谢!
我的IStregsystem:
using System;
using System.Collections.Generic;
using Eksamensopgave2016.Core;
namespace Eksamensopgave2016
{
public interface IStregsystem
{
IEnumerable<Product> ActiveProducts { get; }
List<User> Users { get; set; }
Queue<Transaction> Transactions { get; set; }
InsertCashTransaction AddCreditsToAccount(User user, int amount);
BuyTransaction BuyProduct(User user, Product product);
Product GetProductByID(int productID);
IEnumerable<Transaction> GetTransactions(User user, int count);
List<User> GetUsers(IFilter<User> filter);
User GetUserByUsername(string username);
event UserBalanceNotification UserBalanceWarning;
}
}
【问题讨论】:
-
UserBalanceWarning 是一个方法,还是一个属性? 这是一个事件。
-
你能展示你的 IStregsystem 和 UserBalanceNotification 的代码吗?
-
@Nikolay 我已经在 OP 中有我的整个 UserBalanceNotification.cs 文件。我已经编辑了帖子以包含 IStregsystem。
标签: c# events methods properties