为什么StructuralObject的方法没有实现?

时间:2010-10-02 07:59:47

标签: c# entity-framework entity-framework-4

我在Reflector中查找System.Data.Objects.DataClasses.StructuralObject的方法,我发现任何方法都没有实现。

据我所知,大多数SetValidValue重载的某些方法已标记为保留供将来使用,如其文档中所述。

但即使是其他人,例如:

protected internal static bool BinaryEquals(byte[] first, byte[] second);

protected static DateTime DefaultDateTimeValue();

protected internal static byte[] GetValidValue(byte[] currentValue);

protected internal T GetValidValue<T>(T currentValue, string property, 
                                      bool isNullable, bool isInitialized) 
                                      where T: ComplexObject, new();

protected internal T SetValidValue<T>(T oldValue, T newValue, 
                                                  string property) 
                                                  where T: ComplexObject;

protected internal static TComplex VerifyComplexObjectIsNotNull<TComplex>(
                                                  TComplex complexObject, 
                                                  string propertyName) 
                                                  where TComplex: ComplexObject;

即使这些方法也没有实施。有什么我想念的吗?

其次,EntityObject继承自StructuralObject。对EntityObject来说,这些方法似乎没有多大意义。例如,我为什么要拨打这个电话:

public partial class Address: EntityObject
{
    public void SomeMethod()
    {
        SetValidValue(0); // On what property or field would I be 
                     // setting this value? It doesn't
                     // seem to belong here.
    }
}

1 个答案:

答案 0 :(得分:2)

我在Reflector中查看这些类型,并且所有方法都有一个实现。其中大多数都非常简单(特别是在SetValidValue中),但有一个实现。

听起来好像是在Reflector中加载元数据/引用程序集。这些程序集仅包含类型和方法的元数据定义,但不包含实际代码。尝试卸载程序集并从具有实现的位置重新加载它们。通常我只使用Reflector的Open Cache功能来执行此操作。