Có thể thực hiện điều đó trong C# 3 hoặc 4 không? Có lẽ với một số phản ánh?Chạy phương pháp trước tất cả các phương thức của một lớp
class Magic
{
[RunBeforeAll]
public void BaseMethod()
{
}
//runs BaseMethod before being executed
public void Method1()
{
}
//runs BaseMethod before being executed
public void Method2()
{
}
}
EDIT
Có một giải pháp thay thế cho việc này, hãy Magic
một singleton và đưa code của bạn trên getter của instance tĩnh. Đó là những gì tôi đã làm:
public class Magic
{
private static Magic magic = new Magic();
public static Magic Instance
{
get
{
magic.BaseMethod();
return magic;
}
}
public void BaseMethod()
{
}
//runs BaseMethod before being executed
public void Method1()
{
}
//runs BaseMethod before being executed
public void Method2()
{
}
}
Làm thế nào về một hàm tạo? – JConstantine
Sử dụng một hàm tạo là không có giải pháp, bởi vì nếu tôi được thực hiện, nói rằng, hai phương pháp của một ví dụ, tôi chỉ nhận được basemethod để chạy một lần. Cũng rất không thích hợp cho các trường hợp tĩnh. –
Bạn có thể thực hiện điều này bằng cách sử dụng 'dynamic' và triển khai [' IDynamicMetaObjectProvider'] (http://msdn.microsoft.com/en-us/library/system.dynamic.idynamicmetaobjectprovider.aspx). Điều này sẽ cho phép bạn chạy mã của riêng bạn trong quá trình ràng buộc, điều này xảy ra trước khi một phương thức được thực hiện. Lưu ý: Đề xuất này được cung cấp như một sự tò mò. Nó không thực sự là một cách tốt để giải quyết vấn đề của bạn. – Brian