C#包括其他文件

时间:2016-03-20 19:00:55

标签: c# class namespaces

如何在second.cs文件中访问函数?

  

例如,从first_main中的第二个文件调用someFunction。

我试过了:

first_main.cs:

long result= (long) ceil(duration);

second.cs:

using second;
namespace first_main
{
    public partial class MainWindow : MetroWindow, funkcijos
    {
        public MainWindow()
        {
            someFuction();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

MetroWindow必须是一个界面,否则你无法继承MetroWindow,funkcijos。 .net

不支持多重继承
using second;
namespace first_main
{
   public partial class MainWindow : MetroWindow
   {
      public MainWindow()
      {
        var second = new funkcijos();
        funkcijos.someFuction();
      }
    }
}

namespace second
{
   public class funkcijos
   {
      public funkcijos()
      {
      }

      public void someFuction()
      {
            MessageBox.Show("I use function in MainWindow class, from function class");
      }
    }
}

答案 1 :(得分:-1)

在您的原始问题中,您似乎正在尝试跨两个不同的命名空间实现部分类,或者实现多重继承,c#中都不可能这样做。

为实现相同功能,您可以创建一个扩展方法,将someFuction [原文如此]与MainWindow类关联起来:

<强> first_main.cs:

using second;

namespace first_main
{
    public partial class MainWindow : MetroWindow
    {
        MainWindow()
        {
            this.someFuction();
        }
    }
}

<强> second.cs:

using first_main;

namespace second
{
    public static class MainWindowExtensions
    {
        public static void someFuction(this MainWindow instance)
        {
            ...
        }
    }
}

此外,利用这种方法,MainWindow的实例似乎可以获得存储在extensions方法类中的方法,就好像它们是公共实例成员一样:

var mainWindow = new MainWindow();
mainWindow.someFuction();

使用接口方法,您无法实现代码的可重用性。您所拥有的只是合同,但您仍然需要在使用该接口的任何地方实现这些方法。使用此扩展方法方法解决问题的好处是,您可以实现&#34; 一次编写,随处使用&#34;。

相关问题