使用空接口

时间:2015-05-06 11:28:24

标签: c# linq interface

我在空或'标记'界面的主题上阅读了许多文章,包括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
}

我必须做的就是在IMyInterfaceFoo上“实施”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查询,所以,如果可能的话,我想找到一个允许我使用匿名类型的解决方案。

有没有人知道我遇到的错误的解决方案或解决方法?

0 个答案:

没有答案