Tôi đang phát triển một ứng dụng trong ASP.Net 4.0 với C# nơi tôi đang ghi nhật ký và truy tìm bằng cách sử dụng Enterprise Lib của Microsoft. Vấn đề của tôi là hầu như trong mọi chức năng, theo hướng dẫn của công ty tôi, nơi có tương tác với cơ sở dữ liệu hoặc một số quy tắc kinh doanh quan trọng, hãy sử dụng truy tìm, theo định dạng này.Cách lấy tên phương thức tự động trong Đoạn mã trong C# 4.0
try
{
_traceLog.clear();
_traceLog.AppendLine("XYZ method started: XYZ()");
_traceLog.AppendLine("XYZ method completed: XYZ()");
}
catch(Exception ex)
{
_userException.CreateExceptionLog(ex);
}
finally
{
_userException.CreateTraceLog(_traceLog.ToString());
}
Vì vậy, những gì tôi muốn là chuyển đổi nó thành đoạn mã sẽ tự động phát hiện phương pháp hiện tại, như trong trường hợp trên chúng tôi có XYZ().
Hãy giúp tôi. Cũng cho tôi biết cách để thêm này vào intellisense. Ngay bây giờ tôi có thể tạo tập tin .snippet và sử dụng đoạn mã chèn từ menu ngữ cảnh.
Cập nhật
Tôi nghĩ rằng tôi không rõ ràng với các bạn. Hãy để tôi làm rõ hơn. tôi có một đoạn mã
<CodeSnippets
xmlns="http://schemas.microsoft.com/VisualStudio/2010/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>
TL
</Title>
</Header>
<Snippet>
<Code Language="CSharp">
<![CDATA[ try
{
_traceLog.Clear();
_traceLog.AppendLine(""); // here in side the append line i want to get name of method under which i am placing code snippet.
_traceLog.AppendLine("");
}
catch (Exception ex)
{
_userExceptionLog.CreateExceptionLog(ex);
}
finally
{
_userExceptionLog.CreateTraceLog(_traceLog.ToString());
}]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
Ví dụ, nếu phương pháp của tôi là
void XYZ()
{
// when i insert snippet here , the snippet will automatically detect
rằng đoạn mã này sẽ được đặt dưới chức năng XYZ.
try
{
_traceLog.Clear();
_traceLog.AppendLine("XYZ started: XYZ()");
// ở bên cạnh dòng nối thêm tôi muốn lấy tên phương thức theo mà tôi đang đặt đoạn mã.
_traceLog.AppendLine("XYZ completed: XYZ()");
}
catch (Exception ex)
{
_userExceptionLog.CreateExceptionLog(ex);
}
finally
{
_userExceptionLog.CreateTraceLog(_traceLog.ToString());
}
}
Điều này có khả thi không? hoặc tôi phải nhập nó bằng tay hoặc bất kỳ cách nào khác ngắn?
Tôi không biết câu trả lời cho câu hỏi cụ thể của bạn, nhưng bạn có cân nhắc sử dụng [PostSharp] (http://sharpcrafters.com) thay thế không? –
Tôi sẽ đề nghị bạn đề nghị rằng đăng nhập, nhưng không xử lý (tức là tiếp tục như thể nó đã không xảy ra) mỗi ngoại lệ là * không * một ý tưởng tốt. – Richard
Richard đúng. Bạn đang 'nuốt' ngoại lệ, đó là thực hành rất xấu. Cách tiếp cận tốt hơn là không đăng nhập ở cấp độ đó và cho phép ngoại lệ bong bóng, và đăng nhập chúng ở cấp cơ sở của ứng dụng (ví dụ, trong sự kiện 'Application_Error' của global.asax của ASP.NET) ứng dụng web). – Steven