如何在不调用基本默认构造函数的情况下实例化继承的 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));
只是好奇。我有一个继承 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));