假设我有一个
List<dynamic> myList = new List<dynamic>();
Run Code Online (Sandbox Code Playgroud)
在课堂内:
public class DynamicMixin : DynamicObject
{
internal List<dynamic> myList= new List<dynamic>();
public void AddInterface<T>(T _item) where T:class{
Interfaces.Add(_item);
}
public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result)
{
if (myList.Contains((item)=>item.GetType().Equals(indexes[0].GetType())){
/* do something */
}
return base.TryGetIndex(binder, indexes, out result);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写myDynamicObject [typeof(IDisposable)]所以我会得到属于myDynamicObject的IDiposable对象.
这行给了我一个错误:
if (myList.Contains((item)=>item.GetType().Equals(indexes[0].GetType())){
Run Code Online (Sandbox Code Playgroud)
无法将lambda表达式转换为"动态"类型,因为它不是委托类型
我可以通过迭代列表来做到这一点:但为什么我无法使用Contains?
Contains()期望一个实际的项目(dynamic在你的情况下类型)不是委托,我想你想要Any():
if (myList.Any( item => item.GetType().Equals(indexes[0].GetType()))
{
Run Code Online (Sandbox Code Playgroud)
Becasue Conaints被宣布为:
public bool Contains(
T item
)
Run Code Online (Sandbox Code Playgroud)
你应该使用 Any(your lambda)
| 归档时间: |
|
| 查看次数: |
3280 次 |
| 最近记录: |