我在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.
}
}
答案 0 :(得分:2)
我在Reflector中查看这些类型,并且所有方法都有一个实现。其中大多数都非常简单(特别是在SetValidValue中),但有一个实现。
听起来好像是在Reflector中加载元数据/引用程序集。这些程序集仅包含类型和方法的元数据定义,但不包含实际代码。尝试卸载程序集并从具有实现的位置重新加载它们。通常我只使用Reflector的Open Cache功能来执行此操作。