AmbiguousMatchException Constructor (String^, Exception^)
Initializes a new instance of the AmbiguousMatchException class with a specified error message and a reference to the inner exception that is the cause of this exception.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- message
-
Type:
System::String^
The error message that explains the reason for the exception.
- inner
-
Type:
System::Exception^
The exception that is the cause of the current exception. If the inner parameter is not null, the current exception is raised in a catch block that handles the inner exception.
An exception that is thrown as a direct result of a previous exception should include a reference to the previous exception in the InnerException property. The InnerException property returns the same value that is passed into the constructor, or null if the InnerException property does not supply the inner exception value to the constructor.
The following table shows the initial property values for an instance of AmbiguousMatchException.
Property | Value |
|---|---|
The inner exception reference. | |
The error message string. |
The following example shows two classes, each named Mymethod. One class takes an integer and the other takes a string. If an integer is passed to Mymethod, the first class is used. If a string is passed, the second class is used. If it cannot be determined which Mymethod to use, AmbiguousMatchException is thrown.
using namespace System; using namespace System::Reflection; namespace Ambiguity { ref class Myambiguous { public: //The first overload is typed to an Int32 static void Mymethod(Int32 number) { Console::WriteLine("I am from 'Int32' method"); } //The second overload is typed to a String^ static void Mymethod(String^ alpha) { Console::WriteLine("I am from 'String^' method."); } static void Main() { try { //The following does not cause as exception Mymethod(2); // goes to Mymethod (Int32) Mymethod("3"); // goes to Mymethod (String*) Type^ Mytype = Type::GetType("Ambiguity.Myambiguous"); array<Type^>^temp0 = {Int32::typeid}; MethodInfo^ Mymethodinfo32 = Mytype->GetMethod("Mymethod", temp0); array<Type^>^temp1 = {System::String::typeid}; MethodInfo^ Mymethodinfostr = Mytype->GetMethod("Mymethod", temp1); //Invoke a method, utilizing a Int32 integer array<Object^>^temp2 = {2}; Mymethodinfo32->Invoke(nullptr, temp2); //Invoke the method utilizing a String^ array<Object^>^temp3 = {"1"}; Mymethodinfostr->Invoke(nullptr, temp3); //The following line causes an ambiguous exception MethodInfo^ Mymethodinfo = Mytype->GetMethod("Mymethod"); } catch (AmbiguousMatchException^ ex) { Console::WriteLine("\n{0}\n{1}", ex->GetType()->FullName, ex->Message); } catch (...) { Console::WriteLine("\nSome other exception."); } return; } }; } int main() { Ambiguity::Myambiguous::Main(); } //This code produces the following output: // // I am from 'Int32' method // I am from 'String^' method. // I am from 'Int32' method // I am from 'String^' method. // // System.Reflection.AmbiguousMatchException // Ambiguous match found.
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1