Trochę googling dostaje this Ayende blog post od marca 2010 roku, z którego cytuję fragment:
mogę odtworzyć tego teraz, tutaj to jak on się tam:
public class Strange : MarshalByRefObject
{
public void WTF()
{
Console.WriteLine(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
new Uri("http://localhost:58080/indexes/categoriesByName?query=CategoryName%3ABeverages&start=0&pageSize=25");
}
}
public class Program
{
private static void Main()
{
var instanceAndUnwrap = (Strange) AppDomain.CreateDomain("test", null, new AppDomainSetup
{
ConfigurationFile = ""
}).CreateInstanceAndUnwrap("ConsoleApplication5", "ConsoleApplication5.Strange");
instanceAndUnwrap.WTF();
}
}
które miały niektóre czas się wymyślić.
Z wątku komentarza poniżej, który mam odtłuszczony, ale nie czytać w szczegółach, przyczyną źródłową wydaje się być błąd w głównym pliku konfiguracyjnym maszyny, który jest analizowany tylko raz na? AppDomain
, stąd brak błędu w drugim i kolejnych czasach.
Zwykle używanie tego konstruktu, który został przez niego spalony, to nawyk, który programiści gromadzą poprzez ciężkie doświadczenia. Mniej doświadczeni mogą zachichotać "kultem ładunku" lub "programowaniem przez przypadek", do którego bardziej doświadczeni będą tylko uśmiechać się i kiwać głowami.
Czy rzeczywiście miałeś problem z tym, czy po prostu się zastanawiasz, ponieważ zobaczyłeś to w tym kodzie? To działa dobrze dla mnie i przeglądając konstruktor 'Uri' w ILSpy, nie wygląda na to, że mogłoby zawieść. Warunki, które spowodują, że konstruktor rzuci "UriFormatException": http://msdn.microsoft.com/en-us/library/z6c2z492(v=vs.100).aspx – Gromer
Usunąłeś go i zobaczysz, że coś się nie udało? – Paparazzi
Nie, nie spotkałem się z problemem, to jest powód dla którego warto zapytać, ponieważ nie sądzę, żeby go tam umieszczali tylko dla zabawy. Dobrze byłoby wiedzieć, czy i kiedy można uniknąć porażki. –