如何初始化IList

本文关键字:IList 初始化 | 更新日期: 2023-09-27 17:59:47

所以我的数据网格中填充了一个Ilist

public IList SelectedItem2 { get; set; }

我有一个双击操作,我想与在索引0处选择的行值交互。

<telerik:RadGridView SelectedItem="{Binding SelectedItem2}" ItemsSource="{Binding AllQueries, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="True">
    <telerik:RadGridView.RowStyle>
        <Style TargetType="telerik:GridViewRow">
              <Setter Property="cal:Message.Attach" Value="[Event MouseDoubleClick] = [Open2()]"/>
        </Style>
    </telerik:RadGridView.RowStyle>
</telerik:RadGridView>

当我双击该行时,会产生此错误。错误生成Object reference not set to an instance of an object.

我想知道如何修复这个错误,通常在ViewModel中我会做一些类似的事情

SelectedItem2 = new IList(); 

但没有这样的东西:s

Open2 内

 Interaction i;
 IRecord vm;
 using (var ctx = DB.Get()) i = ctx.Interactions.Find(SelectedItem2.IndexOf(0))

如何初始化IList

您无法初始化接口。您需要创建一个实现该接口的对象:

SelectedItem2 = new ArrayList(); 

SelectedItem2 = new List(of object);

如果你所有的值都是相同的类型,我更喜欢使用一个类型:

IList(Of string) SelectedItem2;
SelectedItem2 = new List(of string);

您需要使用实现IList的类,如List<T>(其中T是列表可以包含的对象类型)或ArrayList

IList是一个接口。不能实例化接口。使用IList的具体实现(例如SelectedItem2 = new List(),而不是IList)。

查看此链接http://social.msdn.microsoft.com/Forums/en-US/a30c4f18-eb14-4aa9-948f-701bb04b591e/list-initialization.无法初始化接口。所以你会这么做:

SelectedItem2 = new List(); 

Ilist是一个你应该使用列表来实例化的接口。

SelectedItem2 = new List();