0
私は迷子になり、私が狂っているかもしれないと感じます。以下のコードでは、TestGetCountry()は正常に動作しますが、TestGetState()は "Parameter count mismatch"例外をスローします。なぜ私は1つの方法で例外を得ているのか、もう1つは他の方法ではなくなってしまったのです。デリゲートは同じシグネチャを使用し、同じ引数型(string [])を渡します。DynamicInvoke throwパラメータの数が一致しません
[TestMethod]
public void TestGetCountry()
{
string expected = Address.GetCountry();
// get the method associated with this Enums.StringGenerator from the dictionary
Delegate action = StringGenerators.GetStringGenerator(Enums.StringGenerators.COUNTRY);
string[] args = new string[] { "" };
string actual = (string)action.DynamicInvoke(args);
Assert.AreEqual(expected, actual, "Country does not match");
}
[TestMethod]
public void TestGetState()
{
string expected = "CA";
Delegate action = StringGenerators.GetStringGenerator(Enums.StringGenerators.STATE);
string[] args = new string[] {"CA", "NY"};
string actual = (string)action.DynamicInvoke(args); // exception thrown here
Assert.AreEqual(expected, actual, "State does not match");
}
StringGeneratorデリゲートは、次のようになります。
public delegate string StringGenerator(object container);
はgetCountryメソッドは次のようになります。
public static string GetCountry(object container)
{
return Address.GetCountry();
}
GETSTATE方法は、次のようになります。
public static string GetState(object container)
{
string[] states = (string[])container;
int index = SeedGovernor.GetRandomInt(states.Length);
return states[index];
}
'GetCountry'-delegate?私が見るのは 'StringGenerators.GetStringGenerator'です。 – HimBromBeere
@HimBromBeereこれらは動的に呼び出されるメソッドです。 –
今後の参考として、ビットとピースではなく[mcve]を提供する価値があります。 –