使用Entity Framework编写接口的代码

3

我正在努力理解实体框架,但我很难理解如何编写接口代码(或者,也许编写接口代码是否可行)。我对C#相当有信心,但这主要是由于我能够在许多其他语言中编程,所以请原谅任何无知。

假设:

public interface IInputSource
{
    float GetCurrentValue(DateTime timestamp);
}

public class PatternSource : IInputSource
{
    …
    float GetCurrentValue(DateTime timestamp)
    {
        // generate value based on probability equation
    }
    …
}

public class TimeSeriesSource : IInputSource
{
     …
     float GetCurrentValue(DateTime timestamp)
     {
         // look up value in a key/value store
     }
     …
 }

我希望编写一个节点类来实现接口,因为有5或6个明显不同的源类型:

public class Node
{
    …
    public IInputSource Inflow { get; set;}
    …
 }

似乎实体框架中的 O/M 永远无法解析 Node 引用的具体类,因此您将无法编写接口。这是真的吗?
如果不是这样,请问有人可以给我一个在 EF 4 中如何实现的例子吗?我正在使用 VS2010 和 .NET 4,并且我来自于代码优先的思维方式。

当然,解决这个问题的一个可能选项是创建一个InputObject的基类,并从那里子类化所有内容,但我更倾向于使用组合而不是继承。我只是想知道在这种情况下是否不可能。 - JohnMetta
1个回答

1

我从未见过任何能够处理这个的ORM框架。你最好的选择是一个抽象基类,作为ORM的存根。

如果您的具体类继承了常见功能,则抽象基类可以继承所需的超类,或者您可以使用装饰器来组合所需的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接