类型& # 39;StoredProcedures& # 39;已经定义了成员'AddNumber'使用
本文关键字:成员 使用 AddNumber StoredProcedures 类型 定义 | 更新日期: 2023-09-27 18:10:10
我创建了一个Visual c# SQL CLR数据库项目。我添加了两个存储过程:test1.cs
和test2.cs
。我在test1.cs
中有一个函数作为AddNumber
。
在test2.cs
中,我想有一个同名的函数,它会做别的事情,但这是我重建它后得到的错误:
test1的代码如下:类型'StoredProcedures'已经定义了一个成员'AddNumber'使用相同的参数类型
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) {
}
};
我不想更改名称,因为我有多个具有相同名称的其他函数。此外,两个文件中也有许多具有相同名称的变量。
我尝试在一个文件中添加一个命名空间,但在部署时,我得到一个错误&"语法不正确&";在sql server中部署它们的代码如下:
创建过程ADD_NUMBER (@Path nvarchar(400))作为外部名称Test.StoredProcedures。test1去
我不知道你为什么从你的问题中删除了这一点。如果类StoredProcedures
在命名空间Namespace
中,并且在程序集Test
中,则可以使用EXTERNAL NAME Test.[Namespace.StoredProcedures].test1
。就SQL而言,完整类型名称需要是单个标识符,并且由于完整类型名称包含一个点,因此需要加引号。
注意,这会导致多个不同的类型具有相同的名称StoredProcedures
。这没有问题,但它与重命名StoredProcedures
以分离StoredProcedure1
和StoredProcedure2
类具有相同的效果,并且重命名是您想要避免的一件事(尽管我不明白为什么)。
我认为你想接口抛出调用你的类方法。这是一种简单而有条理的方法。
通过显式实现接口,像这样:
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#中具有相同方法名称的多个接口继承。