namespace MyExtensions
{
public static class MyExtensions
{
[System.Runtime.CompilerServices.Extension()]
public static bool LogError<T>(this T exp, string errorType = "",string extramessage = "") where T : System.Exception
{
if (!exp.Message.ToString().ToLower().Contains("thread was being aborted"))
{
string strDate = DateTime.Now.Date.ToString("yyyy-MM");
string FilePath = (HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["Errors"]) + "LogError-" + strDate + ".txt");
FileInfo myFile = new FileInfo(FilePath);
StreamWriter sWriter = new StreamWriter(FilePath, true);
sWriter.WriteLine(("#------------" + DateTime.Now.ToString("dd-MM-yyyy hh:mm:ss tt") + "------------#"));
sWriter.WriteLine(("Source: " + exp.Source));
sWriter.WriteLine(("Method: " + exp.TargetSite.Name));
sWriter.WriteLine(("Message: " + exp.Message));
if (exp.InnerException != null)
{
sWriter.WriteLine(("Inner Exception: " + exp.InnerException.Message));
}
sWriter.WriteLine(("StackTrace: " + exp.StackTrace));
if (!string.IsNullOrEmpty(extramessage))
{
sWriter.WriteLine(" -- Extra Message: -- ");
sWriter.WriteLine(extramessage);
}
sWriter.WriteLine("#------------------------------------------------#");
sWriter.WriteLine();
sWriter.WriteLine();
sWriter.Close();
}
return true;
}
}
}
я это класс, который содержит метод расширения называется LogError
Я создал форму жерех, где это на стороне сервера код выглядеть следующим образом:Extension не найден в моем классе .cs
using MyExtensions
public partial class Form : BasePage
{
public void GetEmpleye()
{
try{}
catch(Exception ex)
{ ex.LogError(); }
}
}
ex.LogError();
это линия дает мне поговорку об ошибке:
System.Extension не содержит определение
LogError
Ваш класс 'MyExtensions' сломана, чтобы начать с - это статический класс, но вы положили в конструкторе. Это недопустимо, поэтому вы должны получить сообщение об ошибке. Затем ваш метод «LogError» является методом экземпляра, и, наконец, он не имеет «this» в качестве модификатора для первого параметра. –
Методы расширения должны быть статическими, а первый параметр должен быть «this T exp». – Silvermind
, пожалуйста, проверьте мое редактирование – Sora