Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >分部类构造函数

分部类构造函数
EN

Stack Overflow用户
提问于 2009-10-16 13:24:16
回答 3查看 55.8K关注 0票数 39

有没有一种方法可以让分部类的构造函数调用另一个可以定义或未定义的方法?

基本上我的分部类构造函数是这样定义的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public partial class Test
{
     public Test()
     {
          //do stuff
     }
}

我希望能够以某种方式插入额外的代码,以便在类构造函数被调用后运行。

另外,有没有办法让多个文件在构造函数被调用后注入额外的代码?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-16 21:28:38

C#确实支持partial methods的功能。这允许分部类定义向前声明一个方法,然后分部类的另一部分可以有选择地定义该方法。

分部方法有一些限制:

新方法必须是空类型(不返回),不能接受输出参数,但可以接受引用parameters

  • they不能是虚的或外部的,不能覆盖或覆盖另一个方法(通过“”关键字)

分部方法是隐式密封的和私有的。

但是,不可能让分部类的两个不同部分实现相同的分部方法。通常,在代码生成的分部类中使用分部方法,以允许未生成的部分扩展或自定义生成的部分的行为(有时反之亦然)。如果声明了一个分部方法,但没有在任何类部分中实现,编译器将自动消除对它的任何调用。

下面是一个代码示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 public partial class PartialTestClass
 {
     partial void DoSomething();

     public PartialTestClass() { DoSomething(); }
 }

 public partial class PartialTestClass
 {
     partial void DoSomething()  { /* code here */ }
 }
票数 57
EN

Stack Overflow用户

发布于 2009-10-16 21:27:15

搜索“分部方法”。他们会完全按照你的要求去做。

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public partial class Test
{
    public Test()
    {
         //do stuff

         DoExtraStuff();
    }

    partial void DoExtraStuff();
}


public partial class Test // in some other file
{
     partial void DoExtraStuff()
     {
         // do more stuff
     }
}
票数 9
EN

Stack Overflow用户

发布于 2009-10-16 13:28:14

在C# 3.0中,你可以使用所谓的partial methods -可以调用的方法,即使它们并不真正存在。

如果它们没有在任何分部类文件中定义,则.NET编译器/链接器将删除对它们的调用。

因此,您可以定义一个Customer类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
partial class Customer
{
  string name;

  public string Name
  {
    get
    {
      return name;
    }
    set
    {
      OnBeforeUpdateName();
      OnUpdateName();
      name = value;
      OnAfterUpdateName();
    }
  }

  partial void OnBeforeUpdateName();
  partial void OnAfterUpdateName();
  partial void OnUpdateName();
}

这些分部方法OnBeforeUpdateName()等将被调用,但是如果您的分部类文件没有为它们实现任何东西,那么调用将不会有任何效果。Linq-to-SQL在这类通知方法上使用了大量的时间。

请参阅有关分部方法的博客文章:

Marc

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1580509

复制
相关文章
【云+社区年度正文】Django从入门到精通No.2----模型
学过orm系统自然之道模型的重要性,很多web站点都需要与数据库交互,这个时候模型的设计就显得尤为重要,一个好的模型会使得项目方便管理并且易于维护,比如我们学过的flask,里面的sqlalchemy就是这样一个优秀的模块,通过它可以快速和数据库建立通道,从而使得web编程更为高效,本文主要讲解django的模型。
Python进阶者
2020/11/27
2.1K0
【云+社区年度正文】Django从入门到精通No.2----模型
Django进阶-3-ORM单表
orm操作可以使用类实例化,obj.save的方式,也可以使用create()的形式
小团子
2019/07/18
1.4K0
Django进阶-3-ORM单表
Django 系列博客(十三)
int 自增列,必须填入参数 primary_key=True。当 model 中如果没有自增列,则会自动创建一个列名为 id 的列。
py3study
2020/01/22
1.1K0
Django之ORM字段和参数
字段 常用字段 ---- AutoField                                                                                                                                                                                                                                         
人生不如戏
2018/04/12
2.3K0
Django之ForeignKey和ManyToManyField多表查询
多表查询是模型层的重要功能之一, Django提供了一套基于关联字段独特的解决方案.
菲宇
2022/12/21
1.8K0
Django 学习笔记之模型(上)
上片文章讲解模板。你本文将讲解 “MTV” 中 M 层次,即模型层(数据存取层)。模型这内容比较多,我将其拆分为 3 个部分来讲解。同时,文章也配套了例子,你可以通过 阅读原文 来查看。
猴哥yuri
2018/08/16
1.8K0
ORM常用字段介绍
2. 在Django项目的__init__.py文件中写如下代码,告诉Django使用pymysql模块连接MySQL数据库:
全栈程序员站长
2022/07/21
2.5K0
ORM常用字段介绍
[打造自己的监控系统] 使用Django管理数据库表
操作系统:CentOS 7.3 Python版本 :2.7 Django版本: 1.10.5 操作系统用户:oracle
bsbforever
2020/08/19
7060
django 字段类型_access的数据库类型是
自增的整型字段,必填参数primary_key=True,则成为数据库的主键,无该字段时,django会自动创建主键id字段。
全栈程序员站长
2022/10/04
3.9K0
Django 教程 --- Django 模型
一个Django模块是内置的功能,Django使用创建表,他们的田地,和各种约束。简而言之,Django Models是与Django一起使用的SQL数据库。SQL(结构化查询语言)很复杂,涉及许多不同的查询,用于创建,删除,更新或与数据库有关的任何其他内容。Django模型简化了任务并将表组织到模型中。通常,每个模型都映射到单个数据库表。 本文围绕如何使用Django模型方便地将数据存储在数据库中展开。此外,我们可以使用Django的管理面板来创建,更新,删除或检索模型的字段以及各种类似的操作。Django模型提供了简单性,一致性,版本控制和高级元数据处理。模型的基础包括–
公众号---人生代码
2020/05/25
2.2K0
如何在 Django 中创建抽象模型类?
Django 中的抽象模型类是一个模型,它用作其他模型继承的模板,而不是一个旨在创建或保存到数据库的模型。在应用程序中,可以使用抽象模型定义多个模型共享的相似字段和行为。使用 Django,您可以定义一个派生自 Django.db.models 的模型类,以建立一个抽象模型类。
很酷的站长
2023/08/11
2390
如何在 Django 中创建抽象模型类?
Django进阶知识
django为使用一种新的方式,即:关系对象映射(Object Relational Mapping,简称ORM)。
超蛋lhy
2018/08/31
3.6K0
使用Django管理数据库表
对象-关系映射(Object-Relational Mapping,简称ORM),简单来说就是通过面向对象的方法来映射后端数据库
bsbforever
2020/08/19
7840
使用Django管理数据库表
drf序列化器之反序列化的数据验证
使用序列化器进行反序列化时,需要对数据进行验证后,才能获取验证成功的数据或保存成模型类对象。
仙人技术
2020/09/25
2.1K0
drf序列化器之反序列化的数据验证
【Django】基于PythonWeb的Django框架设计实现天天生鲜系统-3模型创建
当前项目的开发都是数据库驱动,即分析出项目中所需要存储的数据,然后设计数据表结构,接下来对通过编写 SQL 语句对数据库中的表进行 CURD 操作。
天道Vax的时间宝藏
2021/08/11
1.1K0
13. Django 2.1.7 模型类 - 字段类型
上一篇Django 2.1.7 模型 - 使用mysql数据库连接访问讲述了如何使用mysql作为数据库,执行模型查询数据,并返回渲染页面。
Devops海洋的渔夫
2022/01/17
1.2K0
13. Django 2.1.7 模型类 - 字段类型
Django ORM (一) 创建数据库
创建一个 Django 项目及应用 django-admin startproject orm cd orm python manage.py startapp app01 在 models.py 上创建数据库结构 from django.db import models class Publisher(models.Model): name = models.CharField(max_length=30, verbose_name="名称") address = models.Ch
py3study
2020/01/16
1.4K0
Django基础——ORM字段和字段参数
对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象(
py3study
2020/01/16
1.6K0
三、模型(一)
当我们的程序涉及到数据库相关操作时,我们一般都会这么做: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import MySQLdb def GetList(sql): db = MySQLdb.connect(user='root', db='website', passwd='1234', host='localhost') cursor = db.cursor() cursor.execut
酱紫安
2018/04/16
4.5K0
点击加载更多

相似问题

安卓。连接蓝牙设备

21

安卓设备上的PhoneGap蓝牙插件

21

从PC模拟蓝牙设备

21

在Windows上使用WebUSB从安卓设备读取文件

162

安卓蓝牙BroadcastReceiver没有发现设备

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文