Eredeti (Java-s) ötlet itt: http://cesjava.freeblog.hu/archives/2009/10/13/a_NUllPointerException_transzparens_kezelese/.
Saját továbbgondolás (C#):
public static class NullReferenceCheckExtensions
{
public static void CheckIfNull<T>(this T instance)
where T : class
{
if (instance == null)
{
string argumentInfo = TryGetArgumentInfo();
if (argumentInfo == null)
argumentInfo = string.Format("An instance of type '{0}'.", typeof(T).FullName);
throw new ArgumentNullException(argumentInfo);
}
}
private static string TryGetArgumentInfo()
{
try
{
var st = new System.Diagnostics.StackTrace(true);
var callerFrame = st.GetFrame(2);
var fileName = callerFrame.GetFileName();
var fullSource = System.IO.File.ReadAllLines(fileName);
var info = fullSource[callerFrame.GetFileLineNumber() - 1].Trim();
return info;
}
catch
{
return null;
}
}
}
Használat:
public void MyMethod(string name, Uri uri)
{
name.CheckIfNull();
uri.CheckIfNull();
}

2 megjegyzés: