【问题标题】:How to use an interface within a public interface with a main?如何在带有主接口的公共接口中使用接口?
【发布时间】:2018-04-02 11:14:10
【问题描述】:
//Program.cs
public interface TestVal
{
    //Input Param 
    string Input { get; }

    //will return output
    TestValRes ValidateRe(string input);
}



class MyClass : ITestVal
{
    static void Main(string[] args)
    {
        var instance = new MyClass();
        instance.Run();
    }

    public void Run()
    {
        ValidateRe("test");
    }

    public ITestValRes ValidateRe(string input)
    {
        return null; // return an instance of a class implementing ITestValRes here.
    }
}


//TestvalRes.cs
public interface TestvalRes
{

    string Input { get; }

    bool IsValid { get; }
}

所以我只想将一个字符串传递给TestVal,进行验证并调用TestvalRes返回它是否有效,如果无效,为什么?所以验证将在第一个公共接口 - TestVal 中完成,但是我仍然需要在 Main() 中调用它,对吧?

【问题讨论】:

  • 你会怎么称呼它?您所做的只是定义任何实现 TestVal 的东西都将实现一个名为 ValidateRe 的方法。你什么也没做。此外,如果您想遵循正常的 C# 命名约定,我建议您将接口命名为 ITestVal 和 ITestValRes。
  • 可爱,非常感谢。我现在的问题是 - 如何在 Main 方法中调用 TestVal?

标签: c# .net interface


【解决方案1】:

首先,我建议您遵循 C# 命名约定并将您的接口分别命名为 ITestValITestValRes

接下来,静态方法不能在同一个类中调用实例方法(不创建实例并使用它)。您需要创建该类的一个实例并将应用程序流的控制权传递给该实例:

class MyClass : ITestVal
{
    static void Main(string[] args)
    {
        var instance = new MyClass();
        instance.Run();
    }

    public void Run()
    {
        ValidateRe("test");
    }

    public ITestValRes ValidateRe(string input)
    {
        return null; // return an instance of a class implementing ITestValRes here.
    }
}

【讨论】:

    猜你喜欢
    • 2013-09-17
    • 1970-01-01
    • 2013-05-10
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 2016-05-03
    • 2017-06-08
    相关资源
    最近更新 更多