Я использую Indexers в своем классе, чтобы упростить поиск по списку. Тем не менее, я хочу иметь возможность возвращать как bool, так и int. Не в то же время, но определите, является ли это bool или int, а затем возвращает его.Indexer с несколькими типами возврата
public class uPermissions
{
private List<uPermission> permissions = new List<uPermission>()
{
new uPermission ("canBuild", false),
new uPermission ("canClaim", false),
new uPermission ("canUnClaim", false),
new uPermission ("canInvite", false),
new uPermission ("canKick", false),
new uPermission ("canSetHome", false)
};
private List<uConstraint> constraints = new List<uConstraint>();
public bool this[string index]
{
get
{
return permissions.Where (p => p.name == index).First().allowed;
}
set
{
permissions.Where (p => p.name == index).First().allowed = value;
}
}
public int this[string index]
{
get
{
return constraints.Where (c => c.name == index).First().count;
}
set
{
constraints.Where (c => c.name == index).First().count = value;
}
}
public bool exists (string permission)
{
var perm = permissions.Where (p => p.name.ToLower() == permission.ToLower()).First();
return (perm != null) ? true : false;
}
public void setAllTrue()
{
foreach (uPermission p in permissions)
{
p.allowed = true;
}
}
public void setAllFalse()
{
foreach (uPermission p in permissions)
{
p.allowed = false;
}
}
}
public class uConstraint
{
public string name;
public int count;
public uConstraint() { }
public uConstraint (string name, int count)
{
this.name = name;
this.count = count;
}
}
public class uPermission
{
public string name;
public bool allowed;
public uPermission() { }
public uPermission (string name, bool allowed)
{
this.name = name;
this.allowed = allowed;
}
}
Это мой код. Я видел что-то о шаблонах во время поиска, но я не понимаю, как это работает, или если это даже правильное решение. Если кто-то может дать некоторую проницательность, мы будем признательны
возможно, вы должны считать словарь - это было бы быстрее. –
Я бы использовал словарь, но это расширение на другое программное обеспечение, и он использует xml для хранения данных, но синтаксический анализ xml не анализирует словари –
Итак, как бы вы отличались, когда вы должны возвращать bool и когда int? В обоих случаях вы передаете один и тот же аргумент строки. – Evk