我在空或'标记'界面的主题上阅读了许多文章,包括this one。我已经得出结论,我不能在我的情况下使用自定义属性,因为我需要能够将类的实例包含到另一个方法中,因为这些类没有任何共同点,所以我别无选择,只能使用'marker'接口
举个例子,我可能有
public class Foo
{
public int Id {get;set;}
public string Name {get;set;}
}
public class Bar
{
public Guid Identifier {get;set;}
public DateTime DueDate {get;set;}
}
我需要将它们传递给另一个类中的方法,因为可能有许多不同类型需要传递给方法,我已经将它定义为这样......
public void MyMethod(IMyInterface model)
{
// Do something clever here
}
我必须做的就是在IMyInterface
和Foo
上“实施”Bar
。
所以问题。我现在发现我需要使用从LINQ语句创建的匿名类型调用我的MyMethod()
方法,所以我尝试了这个...
var data = <Some Complex LINQ>.Select(a=> new { AString = a.Value1, ADecimal = a.Value2});
MyClass.MyMethod(data);
可悲的是,我收到以下编译时错误:
错误202无法将类型'AnonymousType#1'转换为 'IMyInterface'通过引用 转换,拳击转换,拆箱转换,包装 转换或空类型转换
现在,我知道我可以创建一个本地类,并以与我的标准类相同的方式使用它,但我的要求意味着我要去在我即将开展的工作中有一个很多这些LINQ查询,所以,如果可能的话,我想找到一个允许我使用匿名类型的解决方案。
有没有人知道我遇到的错误的解决方案或解决方法?