相关疑难解决方法(0)

如何在不复制元素的情况下从HashSet创建ReadOnlyCollection?

我有一个私有HashSet<string>,它是只读属性的后备字段,它应该返回一个只读集合,以便调用者不能修改集合.所以我试着:

public class MyClass
{
    private readonly HashSet<string> _referencedColumns;

    public ICollection<string> ReferencedColumns { 
        get { return new ReadOnlyCollection<string>(_referencedColumns); }
    }
Run Code Online (Sandbox Code Playgroud)

这不会编译为ReadOnlyCollection接受a IList<T>未实现的HashSet<T>.还有另一个包装我可以用来拯救我复制这些物品吗?为了我的目的,只需返回实现ICollection<T>(而不是IList<T>)实现的东西即可HashSet<T>.

c# base-class-library

11
推荐指数
4
解决办法
7584
查看次数

如何获取字典<T,S>中的键的ReadOnlyCollection <T>

我的类包含一个Dictionary<T, S> dict,我想公开一个ReadOnlyCollection<T>键.如何在不复制Dictionary<T, S>.KeyCollection dict.Keys数组然后将数组暴露为数组的情况下执行此操作ReadOnlyCollection

我希望它 ReadOnlyCollection是一个合适的包装器,即.反映基础字典中的变化,据我所知,将集合复制到数组将不会这样做(以及看似效率低下 - 我实际上并不想要新的集合,只是为了公开基础的密钥集合.. ).任何想法将不胜感激!

编辑:我正在使用C#2.0,因此没有.ToList(轻松)可用的扩展方法.

c# generics collections dictionary c#-2.0

7
推荐指数
2
解决办法
6538
查看次数

如何通过非声明其set属性来生成只读C#列表

List<string> myList我的班级里有一个我想要只为班级用户阅读.

List<strign> myList {get;}

private void SetListValue()
{
    myList = new List<string>();
    myList.Add("ss");
}
Run Code Online (Sandbox Code Playgroud)

像这样我认为我可以myList在我的私有成员中设置我的类中的值,并为类用户提供readonly.但我意识到以这种方式宣布它我无法设置任何价值.

.net c# list

5
推荐指数
2
解决办法
325
查看次数

何时公开IEnumerable而不是ICollection?

public class Order
{
 public int Id {get;set;}
 [DisplayName("User")]
 public long UserId { get; set; }
 [ForeignKey("UserId")]
 public virtual User User { get; set; }
 public decimal Amount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

IEnumurable

public class User
{
 public int Id{get;set;}
 public virtual IEnumerable<Order> Orders { get; set; } 
}

public User GetWithOrders()
{
 var myUser=UserRepository.GetByEmail("email@email.com");
 myUser.Orders=OrderRepository.GetByUserId(myUser.Id);
 return myUser;
}
Run Code Online (Sandbox Code Playgroud)

ICollection

public class User
{
 public int Id{get;set;}
 public virtual ICollection<Order> Orders { get; set; } 
}

public …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc entity-framework repository-pattern ef-code-first

5
推荐指数
0
解决办法
222
查看次数