Trong tất cả các cuốn sách .NET tôi đã đọc hướng dẫn để thực hiện các sự kiện giải thích rằng bạn cần phải phân lớp EventArgs
và sử dụng EventHandler. Tôi tìm kiếm thêm thông tin trên http://msdn.microsoft.com/en-us/library/ms229011.aspx và nói "Không sử dụng System.EventHandler thay vì tạo các đại biểu mới theo cách thủ công để được sử dụng làm trình xử lý sự kiện". Tôi hiểu rằng có những lý do quan trọng để sử dụng EventArgs, nhưng câu hỏi của tôi không phải là "Tôi có nên làm theo cách này không?", Nhưng "Tôi có thể làm theo cách này không?".Có mối liên hệ đặc biệt nào giữa lớp EventArgs và từ khóa sự kiện không?
Có lý do nào khiến tôi không thể sử dụng đại biểu chung thay vì EventHandler
với các sự kiện của tôi không? Ví dụ: nếu tôi muốn một người gửi được đánh máy mạnh (bất kỳ ai khác bị làm phiền bởi điều đó object sender
?).
Để giải thích ý tôi là tốt hơn, có bất kỳ lý do nào sau đây sẽ không hoạt động?
public class IoC
{
public AbstractFactory GetAbstractFactory()
{
var factory = new AbstractFactory();
factory.CreateObject +=()=>new object();
return factory;
}
}
public class AbstractFactory
{
public event Func<object> CreateObject;
private object OnObjectCreated()
{
if(CreateObject == null)
{
throw new Exception("Not injected.");
}
return CreateObject();
}
private object _injectedObject;
public object InjectedObject
{
get
{
if(_injectedObject == null)
{
_injectedObject = OnObjectCreated();
}
return _injectedObject;
}
}
}
Tôi đã thực hiện chính xác việc này để thực hiện điều tương tự với bộ sưu tập có thể quan sát. – asawyer
Chủ đề liên quan: http://stackoverflow.com/questions/4828212/should-eventhandler-always-be-used-for-events/4828233 – CodesInChaos