public static Domain Combine(IDomain first, IDomain second) { if (first.GetNumberOfComponents() + second.GetNumberOfComponents() > 2) { SimpleDomain[] domainsArray = new SimpleDomain[first.GetNumberOfComponents() + second.GetNumberOfComponents()]; int i = 0; if (first is CompositeDomain) //prvi argument je tipa 'CompositeDomain' { for (int j = 0; j < first.GetNumberOfComponents(); j++) { domainsArray[i] = (SimpleDomain)first.GetComponent(j); i++; } } else { domainsArray[i] = (SimpleDomain)first.GetComponent(0); i++; } if (second is CompositeDomain) //drugi argument je tipa 'CompositeDomain' { for (int j = 0; j < second.GetNumberOfComponents(); j++) { domainsArray[i] = (SimpleDomain)second.GetComponent(j); i++; } } else { domainsArray[i] = (SimpleDomain)second.GetComponent(0); i++; } return(new CompositeDomain(domainsArray)); } else { SimpleDomain[] domainsArray = new SimpleDomain[] { (SimpleDomain)first, (SimpleDomain)second }; return(new CompositeDomain(domainsArray)); } }