コード例 #1
0
ファイル: NewLateBinding.cs プロジェクト: ysc0423/CommonCore
 internal static object InternalLateIndexGet(object Instance, object[] Arguments, string[] ArgumentNames, bool ReportErrors, ref OverloadResolution.ResolutionFailure Failure)
 {
     Failure = OverloadResolution.ResolutionFailure.None;
     if (Arguments == null)
     {
         Arguments = Symbols.NoArguments;
     }
     if (ArgumentNames == null)
     {
         ArgumentNames = Symbols.NoArgumentNames;
     }
     Symbols.Container BaseReference = new Symbols.Container(Instance);
     if (BaseReference.IsCOMObject)
     {
         return(LateBinding.LateIndexGet(Instance, Arguments, ArgumentNames));
     }
     if (!BaseReference.IsArray)
     {
         return(NewLateBinding.CallMethod(BaseReference, "", Arguments, ArgumentNames, Symbols.NoTypeArguments, (bool[])null, BindingFlags.InvokeMethod | BindingFlags.GetProperty, ReportErrors, ref Failure));
     }
     if (ArgumentNames.Length <= 0)
     {
         return(BaseReference.GetArrayValue(Arguments));
     }
     Failure = OverloadResolution.ResolutionFailure.InvalidArgument;
     if (ReportErrors)
     {
         throw new ArgumentException(Utils.GetResourceString("Argument_InvalidNamedArgs"));
     }
     return((object)null);
 }
コード例 #2
0
 public void LateIndexGet(object obj, object[] args, string[] paramNames, object expected)
 {
     Assert.Equal(expected, LateBinding.LateIndexGet(obj, args, paramNames));
 }