【问题标题】:methods of a property [closed]属性的方法[关闭]
【发布时间】:2013-12-27 11:37:23
【问题描述】:

我有一个类,我想在里面有两个属性,我希望每个属性都有它们特定的方法。例如,我有一个名为myClass 的类,两个属性propApropB。 现在我希望propA 有两种方法,例如getID()getName()propB 相同,但方法不同。 访问特定方法就像myClass.propA.getName(); 我创建了该属性,但找不到如何将方法分配给该属性 我也阅读了this 问题,但我没有正确理解答案。 任何帮助都会很棒。

【问题讨论】:

  • 它是一个Extension Method。您可以为特定类型 string,int,class etc 创建 Extension Method
  • 阅读一些关于 C# 的书。然后使用包含所需方法的类类型来实现您的属性。
  • propApropB 是什么类型的属性。

标签: c# methods properties


【解决方案1】:

这取决于您想要什么复杂性。如果您的属性是简单类型(如 int、string 等),则创建扩展方法(如来自 Ravi 的 ansver)。但更有可能是您的属性更复杂,因此您最终可能会为它们创建新类,例如:

class MyClass
{
   public A PropA { get; set; }
   public B PropB { get; set; }
}

class A
{
    public void Foo() { ... }
}

class B
{
    public void Bar() { ... }
}

【讨论】:

    【解决方案2】:

    您可以使用Extension Methods 来做到这一点

    扩展方法使您能够将方法“添加”到现有类型 无需创建新的派生类型、重新编译或以其他方式 修改原始类型。扩展方法是一种特殊的 静态方法,但它们被调用就好像它们是实例方法一样 扩展类型。对于用 C# 和 Visual Basic 编写的客户端代码, 调用扩展方法没有明显区别 以及在类型中实际定义的方法。

    namespace ExtensionMethods
    {
        public static class MyExtensions
        {
            public static int WordCount(this String str)
            {
                return str.Split(new char[] { ' ', '.', '?' }, 
                                 StringSplitOptions.RemoveEmptyEntries).Length;
            }
        }   
    }
    

    如何使用

    string s = "Hello Extension Methods";
    int i = s.WordCount();
    

    【讨论】:

    • OP 询问的是基本的 C# 概念,而不是扩展方法。
    猜你喜欢
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 2015-12-20
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    相关资源
    最近更新 更多