我是C#新手,正在尝试实现一个接口。我知道我不能在接口方法上放置访问修饰符,因此如何在下面的“ TestClass2”的公共静态“创建”方法中访问“ TestValue”?我得到的错误是...

'TestClass1'不包含'TestValue'的定义,并且找不到找到接受类型为'TestClass1'的第一个参数的扩展方法'TestValue'

public interface IParent
{
    string TestValue { get; }
}

public class TestClass1 : IParent
{
    string IParent.TestValue
    {
        get { return "hello"; }
    }
}

public class TestClass2
{
    private string _testValue;

    public static TestClass2 Create(TestClass1 input)
    {
        TestClass2 output = new TestClass2();
        output._testValue = input.TestValue;
        return output;
    }
}

最佳答案

在您的具体实现中添加public访问修饰符:

public class TestClass1 : IParent
{
    private TestClass1 _testValue;

    public string TestValue
    {
        get { return "hello"; }
    }
}


编辑:当您实际编写了一个显式接口实现时,我建议您看以下SO问题:C# Interfaces. Implicit implementation versus Explicit implementation

10-06 01:26