-1
parametresi olarak [] dizesiyle yöntemin başlatılması üzerine parametre olarak string[]
özel bir yöntem için birim testleri yazmaya çalışıyorum. Özel bir yöntem çağırmak, PrivateObject
sınıfı ile çalışır, ancak ben string[]
ile çağırarak denedim. Başvurusu bir nesnenin çağırmaPrivateObject NullReferenceException, parametre
örneğine verilmedi:
Test
System.NullReferenceException döndürür.
Aşağıdaki çalıştı:public class Program{ public Program(){} private void TestCommand(string[] command){} }
Program program = new Program(); PrivateObject privateObject = new PrivateObject(program); object[] parameters = new object[1] { new string[2] { "add", "rando" } }; /* doesn't work either object[][] parameters = new object[1][]; parameters[0] = new string[2]; parameters[0][0] = "add"; parameters[0][1] = "rando";*/ privateObject.Invoke("TestCommand", parameters);
Sizin kodunuz olduğu gibi çalışmalıdır. Gerçek 'TestCommand' gerçekte ne yapıyor? – forsvarir
Ne demek '' de çalışmıyor? Bunlar farklı şeyler, aynı şey için sadece farklı kodlar değil. – Toxantron
Parametre listesi 'params nesnesi []' ise, o zaman iki yolla çağrılması paramı 'privateObject.Invoke ("TestCommand"), yeni string [] {"add", "rando"}) veya privateObject.Invoke ("TestCommand", yeni nesne [] {new string [] {"add", "rando"}}) 'kullanmak için. İkincisinin gerekli olduğu durumlar var, ama sanırım dizilerinizi aşırı iç içe geçiriyorsunuz. –