c# 如何根据自定义变量来生成 属性get set

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 如何根据自定义变量来生成 属性get set相关的知识,希望对你有一定的参考价值。

c# 如何根据自定义变量来生成 属性get set
还能不能介绍一下,其他的一些类似操作!

    在VS2005编器中输入 prop  ,然后按两个键盘上的Tab键,就会生成这样的内容
    private int myVar;

    public int MyProperty

    get return myVar;
    set myVar = value;

    并且首先是private int myVar;这一句中的int被选中,你可以直接更改为其它类型的,完成类型指定后再按Tab,又定位到myVar这里了,在这里更改你的变量名称,更改完后下面get set的属性中的变量名称也会随之而变,再按Tab 定位到属性上面的类型和名称.....

2.在变量上点击右键,选择【重构】-【封装字段】。PS:express版没有这个功能。

3.重命名:在需要命名的类,接口,变量,函数上右键,选择【重构】-【重命名】,可以把所有引用该地方都命名。

4.提取方法:选择一块代码段,右键,选择【重构】-【提取方法】,可以把它封装成方法。

5.生成函数根:在不存在的函数引用上,按ctrl+k-m。

参考技术A 在变量上点击右键,选择【重构】-【封装字段】
注意:express版没有这个功能

补偿,其它类似操作:
1.重命名:在需要命名的类,接口,变量,函数上右键,选择【重构】-【重命名】,可以把所有引用该地方都命名
2.提取方法:选择一块代码段,右键,选择【重构】-【提取方法】,可以把它封装成方法,
3.生成函数根:在不存在的函数引用上,按ctrl+k-m本回答被提问者采纳
参考技术B 在VS2005编器中输入 prop
然后按两个键盘上的Tab键,就会生成这样的内容
private int myVar;

public int MyProperty

get return myVar;
set myVar = value;

并且首先是private int myVar;这一句中的int被选中,你可以直接更改为其它类型的,完成类型指定后再按Tab,又定位到myVar这里了,在这里更改你的变量名称,更改完后下面get set的属性中的变量名称也会随之而变,再按Tab 定位到属性上面的类型和名称.....
参考技术C 哈,学习一下,我一直是手写,还不知道有这功能拉:) 参考技术D 不知道你说的是什么呢

如何基于自定义属性添加一对多关系

可以说我有两个实体:

public class Customer
{
     public int CustomerId { get; set; }
     public Guid CustomerKey { get; set; }

     public ICollection<Product> Products { get; set; }
}

public class Product
{
     public int ProductId { get; set; }
     public Guid CustomerKey { get; set; }
     public string Name { get; set; }
}

1个客户可以有很多产品,但我想基于CustomerKey属性绑定它们。以下是示例数据的示例:

CustomerId | CustomerKey
    1      | {00000000-0000-0000-0000-111111111111}
    2      | {00000000-0000-0000-0000-222222222222}

ProductId  | Name     | CustomerKey
    1      | Product1 | {00000000-0000-0000-0000-111111111111}
    2      | Product2 | {00000000-0000-0000-0000-111111111111}
    3      | Product3 | {00000000-0000-0000-0000-222222222222}

因此,第一个客户有前两个产品,第二个客户有最后一个产品。我尝试过这样的事情:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Customer>().HasMany(m => m.Products);
}

但是如何指定我想在CustomerKey上绑定它们?

答案

这是可能的,但前提是CustomerKeyCustomer属性(列)是唯一的。这是EF Core要求(实际上是关系数据库FK要求,但EF Core仅支持可以表示为关系数据库FK约束的关系),所以如果不是,那么您所要求的是不可能的。

流畅的API是HasPrincipalKey方法:

配置此关系所针对的唯一属性。通常,如果要使用主键以外的属性作为主要属性,则只调用此方法。如果指定的属性不是唯一约束(或主键),则将引入新的唯一约束。

当然,FK配置与HasForeignKey一样。

将其应用于您的模型:

modelBuilder.Entity<Customer>()
    .HasMany(customer => customer.Products)
    .WithOne() // no navigation property
    .HasForeignKey(product => product.CustomerKey)
    .HasPrincipalKey(customer => customer.CustomerKey);
另一答案

声明两个具有导航属性的类。使用主键上的ForeignKey属性标记其中一个表(从属表)。

public class Customer
{
     public int CustomerId { get; set; }
     [Index("IX_Customer_Key", 1, IsUnique = true)]
     public Guid CustomerKey { get; set; }

     public ICollection<Product> Products { get; set; }
}

public class Product
{
     public int ProductId { get; set; }
     public Guid CustomerKey { get; set; }
     public string Name { get; set; }

     [ForeignKey("CustomerKey")]
     public Customer Customer{ get; set; }
}

以上是关于c# 如何根据自定义变量来生成 属性get set的主要内容,如果未能解决你的问题,请参考以下文章

用 Visual Studio 开发工具 如何快速生成 属性的 get 和set 方法。

C#字段属性的特性

用Visual Studio 开发工具 如何快速生成 属性的 get 和set 方法。

C#中的属性get和set到底是啥意思

如何基于自定义属性添加一对多关系

C# 自定义排序