internal IMembershipTable GetMembershipTable(GlobalConfiguration.LivenessProviderType livenessType, string membershipTableAssembly = null) { IMembershipTable membershipTable; if (livenessType.Equals(GlobalConfiguration.LivenessProviderType.MembershipTableGrain)) { membershipTable = GrainReference.FromGrainId(Constants.SystemMembershipTableId).Cast<IMembershipTableGrain>(); } else if (livenessType.Equals(GlobalConfiguration.LivenessProviderType.SqlServer)) { membershipTable = AssemblyLoader.LoadAndCreateInstance<IMembershipTable>(Constants.ORLEANS_SQL_UTILS_DLL, logger); } else if (livenessType.Equals(GlobalConfiguration.LivenessProviderType.AzureTable)) { membershipTable = AssemblyLoader.LoadAndCreateInstance<IMembershipTable>(Constants.ORLEANS_AZURE_UTILS_DLL, logger); } else if (livenessType.Equals(GlobalConfiguration.LivenessProviderType.ZooKeeper)) { membershipTable = AssemblyLoader.LoadAndCreateInstance<IMembershipTable>(Constants.ORLEANS_ZOOKEEPER_UTILS_DLL, logger); } else if (livenessType.Equals(GlobalConfiguration.LivenessProviderType.Custom)) { membershipTable = AssemblyLoader.LoadAndCreateInstance<IMembershipTable>(membershipTableAssembly, logger); } else { throw new NotImplementedException("No membership table provider found for LivenessType=" + livenessType); } return membershipTable; }