refactor method binding base and assign parameter assignments
This commit is contained in:
parent
d15f7066e5
commit
2bd8ad8b0e
@ -37,33 +37,48 @@ public class OmsMethodBuilder
|
|||||||
c_ReturnElementMethodBinding = Oms.GetInstance(KnownInstanceGuids.Classes.ReturnElementMethodBinding);
|
c_ReturnElementMethodBinding = Oms.GetInstance(KnownInstanceGuids.Classes.ReturnElementMethodBinding);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ReturnAttributeMethodBinding CreateReturnAttributeMethodBinding(MethodReturningAttribute method)
|
private InstanceHandle CreateMethodBindingBase(InstanceHandle parentClass, Method method, IEnumerable<KeyValuePair<InstanceHandle, InstanceHandle>>? parameterAssignments)
|
||||||
{
|
{
|
||||||
InstanceHandle methodBinding = Oms.CreateInstanceOf(c_ReturnAttributeMethodBinding);
|
InstanceHandle methodBinding = Oms.CreateInstanceOf(parentClass);
|
||||||
Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.GetHandle());
|
Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.GetHandle());
|
||||||
|
if (parameterAssignments != null)
|
||||||
|
{
|
||||||
|
CreateParameterAssignments(methodBinding, parameterAssignments);
|
||||||
|
}
|
||||||
|
return methodBinding;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CreateParameterAssignments(InstanceHandle methodBinding, IEnumerable<KeyValuePair<InstanceHandle, InstanceHandle>> parameterAssignments)
|
||||||
|
{
|
||||||
|
List<InstanceHandle> parmAssignments = new List<InstanceHandle>();
|
||||||
|
foreach (KeyValuePair<InstanceHandle, InstanceHandle> kvp in parameterAssignments)
|
||||||
|
{
|
||||||
|
InstanceHandle parmAssignment = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.ParameterAssignment));
|
||||||
|
Oms.AssignRelationship(parmAssignment, Oms.GetInstance(KnownRelationshipGuids.Parameter_Assignment__assigns_to__Work_Data), kvp.Key);
|
||||||
|
Oms.AssignRelationship(parmAssignment, Oms.GetInstance(KnownRelationshipGuids.Parameter_Assignment__assigns_from__Executable_returning_Work_Data), kvp.Value);
|
||||||
|
parmAssignments.Add(parmAssignment);
|
||||||
|
}
|
||||||
|
Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__has__Parameter_Assignment), parmAssignments);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ReturnAttributeMethodBinding CreateReturnAttributeMethodBinding(MethodReturningAttribute method, IEnumerable<KeyValuePair<InstanceHandle, InstanceHandle>>? parameterAssignments = null)
|
||||||
|
{
|
||||||
|
InstanceHandle methodBinding = CreateMethodBindingBase(c_ReturnAttributeMethodBinding, method, parameterAssignments);
|
||||||
return new ReturnAttributeMethodBinding(methodBinding);
|
return new ReturnAttributeMethodBinding(methodBinding);
|
||||||
}
|
}
|
||||||
public ReturnInstanceSetMethodBinding CreateReturnInstanceSetMethodBinding(MethodReturningInstanceSet method)
|
public ReturnInstanceSetMethodBinding CreateReturnInstanceSetMethodBinding(MethodReturningInstanceSet method, IEnumerable<KeyValuePair<InstanceHandle, InstanceHandle>>? parameterAssignments = null)
|
||||||
{
|
{
|
||||||
InstanceHandle methodBinding = Oms.CreateInstanceOf(c_ReturnInstanceSetMethodBinding);
|
InstanceHandle methodBinding = CreateMethodBindingBase(c_ReturnInstanceSetMethodBinding, method, parameterAssignments);
|
||||||
Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.GetHandle());
|
|
||||||
return new ReturnInstanceSetMethodBinding(methodBinding);
|
return new ReturnInstanceSetMethodBinding(methodBinding);
|
||||||
}
|
}
|
||||||
public ReturnElementMethodBinding CreateReturnElementMethodBinding(MethodReturningElement method)
|
public ReturnElementMethodBinding CreateReturnElementMethodBinding(MethodReturningElement method, IEnumerable<KeyValuePair<InstanceHandle, InstanceHandle>>? parameterAssignments = null)
|
||||||
{
|
{
|
||||||
InstanceHandle methodBinding = Oms.CreateInstanceOf(c_ReturnElementMethodBinding);
|
InstanceHandle methodBinding = CreateMethodBindingBase(c_ReturnElementMethodBinding, method, parameterAssignments);
|
||||||
Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.GetHandle());
|
|
||||||
return new ReturnElementMethodBinding(methodBinding);
|
return new ReturnElementMethodBinding(methodBinding);
|
||||||
}
|
}
|
||||||
public BuildResponseMethodBinding CreateBuildResponseMethodBinding(MethodBuildingResponse method)
|
public BuildResponseMethodBinding CreateBuildResponseMethodBinding(MethodBuildingResponse method, IEnumerable<KeyValuePair<InstanceHandle, InstanceHandle>>? parameterAssignments = null)
|
||||||
{
|
{
|
||||||
if (c_BuildResponseMethodBinding == InstanceHandle.Empty)
|
InstanceHandle methodBinding = CreateMethodBindingBase(c_BuildResponseMethodBinding, method, parameterAssignments);
|
||||||
{
|
|
||||||
c_BuildResponseMethodBinding = Oms.GetInstance(KnownInstanceGuids.Classes.BuildResponseMethodBinding);
|
|
||||||
}
|
|
||||||
|
|
||||||
InstanceHandle methodBinding = Oms.CreateInstanceOf(c_BuildResponseMethodBinding);
|
|
||||||
Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.GetHandle());
|
|
||||||
return new BuildResponseMethodBinding(methodBinding);
|
return new BuildResponseMethodBinding(methodBinding);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user