如何在不调用基本默认构造函数的情况下实例化继承的 class

How to instantiate an inherited class without calling base default constructor

只是好奇。我有一个继承 IdentityUser class 的自定义 asp.net 身份用户存储 class。是这样定义的:

public class ApplicationUser : IdentityUser
{
    public ApplicationUser()
    {

    }
}

注意我没有显式调用基本构造函数。

我知道即使我没有显式调用基本构造函数,它也会被隐式调用。

我在调试的时候演示过。当我刚进入 ApplicationUser 构造函数时,基 class 的 Id 成员已经包含一个等于某个 GUID 字符串的值。

来自我看到的使用反射的基础 class 构造函数:

public IdentityUser()
{
  this.Id = Guid.NewGuid().ToString();
}

有什么解决方法吗?

在我的自定义用户存储中,ID 是一个整数主键,但我在稍后阶段使用数据库中的值设置它,因此该 GUID 是否默认分配给该成员并不重要,但我想知道是否可以避免这种情况。也许通过继承其他 classes 并实现其他接口:IdentityUser<string, IdentityUserLogin, IdentityUserRole, IdentityUserClaim>, IUser, IUser<string>string 替换为 int

对此有何评论?

此致

海梅

听起来你想做点骇人听闻的事。
我同意;干得好。

var user = (ApplicationUser)FormatterServices.GetUninitializedObject(typeof(ApplicationUser));