C# NullReferenceException (ссылка на объект не указывает на экземпляр объекта)
Screenshot screenshot = ScreenshotActions.Take(CaptureMode.Window);
var info = ScreenshotActions.Save(@"C:\Users\User\Desktop\screenShotEX\", screenshot);
WinForm.OnScreenGrab(info); // <--- nullReferenceException
Данный код выбрасывает NullReferenceException, хотя в момент выбрасывания все поля инициализированы, подскажите, пожалуйста, в чем может быть проблема и как её можно исправить
ScreenshotInfo.cs
public class ScreenshotInfo
{
private DateTime dateTimeStamp_;
public DateTime DateTimeStamp
{
get { return dateTimeStamp_; }
set { if (dateTimeStamp_ != value) dateTimeStamp_ = value; }
}
private string name_;
public string Name
{
get { return name_; }
set { if (name_ != value) name_ = value; }
}
private bool isSaved_;
public bool IsSaved
{
get { return isSaved_; }
set { if (isSaved_ != value) isSaved_ = value; }
}
private string path_;
public string PATH
{
get { return path_; }
set { if (path_ != value && !string.IsNullOrWhiteSpace(value) && !string.IsNullOrEmpty(value)) path_ = value; }
}
public ScreenshotInfo(DateTime dateTimeStamp, string screenshotName, bool isSaved, string path)
{
DateTimeStamp = dateTimeStamp;
Name = screenshotName;
IsSaved = isSaved;
PATH = path;
}
}
Screenshot.cs
public class Screenshot
{
private Bitmap screenshot_;
public Bitmap CurrentScreenshot
{
get { return screenshot_; }
set { if (screenshot_ != value) screenshot_ = value; }
}
private DateTime dateTimeStamp_;
public DateTime DateTimeStamp
{
get { return dateTimeStamp_; }
set { if (dateTimeStamp_ != value) dateTimeStamp_ = value; }
}
public Screenshot(Bitmap screenshot)
{
CurrentScreenshot = screenshot;
DateTimeStamp = DateTime.Now;
}
}
ScreenshotActions.cs
public static class ScreenshotActions
{
public static Screenshot Take(CaptureMode captureMode = CaptureMode.Window)
{
return new Screenshot(new ScreenCapturer().Capture(captureMode));
}
public static ScreenshotInfo Save(string PATH, Screenshot screenshot)
{
if (screenshot.CurrentScreenshot != null)
{
var screenshotName = GenerateScreenshotName();
screenshot.CurrentScreenshot.Save(PATH + screenshotName);
return new ScreenshotInfo(screenshot.DateTimeStamp, screenshotName, true, PATH);
}
else
{
throw new Exception("Screenshot didn`t save, unknown error");
}
}
private static string GenerateScreenshotName()
{
Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
return BaseWork.ConvertFromBaseToBase(unixTimestamp.ToString(), 10, 36);
}
}
