类型& # 39;StoredProcedures& # 39;已经定义了成员'AddNumber'使用

本文关键字:成员 使用 AddNumber StoredProcedures 类型 定义 | 更新日期: 2023-09-27 18:10:10

我创建了一个Visual c# SQL CLR数据库项目。我添加了两个存储过程:test1.cstest2.cs。我在test1.cs中有一个函数作为AddNumber

test2.cs中,我想有一个同名的函数,它会做别的事情,但这是我重建它后得到的错误:

类型'StoredProcedures'已经定义了一个成员'AddNumber'使用相同的参数类型

test1的代码如下:
public partial class StoredProcedures {
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static void test1(string Path) {
        // Put your code here
    }
    private static void AddNumbers(int a, int b) {
    }
};
测试2

public partial class StoredProcedures {
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static void test2(string Path) {
        // Put your code here
    }
    private static void AddNumbers(int a, int b) {
    }
};

我不想更改名称,因为我有多个具有相同名称的其他函数。此外,两个文件中也有许多具有相同名称的变量。

类型& # 39;StoredProcedures& # 39;已经定义了成员'AddNumber'使用

我尝试在一个文件中添加一个命名空间,但在部署时,我得到一个错误&"语法不正确&";在sql server中部署它们的代码如下:

创建过程ADD_NUMBER (@Path nvarchar(400))作为外部名称Test.StoredProcedures。test1去

我不知道你为什么从你的问题中删除了这一点。如果类StoredProcedures在命名空间Namespace中,并且在程序集Test中,则可以使用EXTERNAL NAME Test.[Namespace.StoredProcedures].test1。就SQL而言,完整类型名称需要是单个标识符,并且由于完整类型名称包含一个点,因此需要加引号。

注意,这会导致多个不同的类型具有相同的名称StoredProcedures。这没有问题,但它与重命名StoredProcedures以分离StoredProcedure1StoredProcedure2类具有相同的效果,并且重命名是您想要避免的一件事(尽管我不明白为什么)。

我认为你想接口抛出调用你的类方法。这是一种简单而有条理的方法。

通过显式实现接口,像这样:

public interface ITest {
    void Test();
}
public interface ITest2 {
    void Test();
}
public class Dual : ITest, ITest2
{
    void ITest.Test() {
        Console.WriteLine("ITest.Test");
    }
    void ITest2.Test() {
        Console.WriteLine("ITest2.Test");
    }
}

注意,函数对于类来说是私有的,所以必须将该类的一个对象赋值给定义为该特定接口的变量:

var dual = new Dual();
ITest test = dual;
test.Test();
ITest2 test2 = dual;
test2.Test();

我的回答的起点是对Stack Overflow问题的回答从c#中具有相同方法名称的多个接口继承