gpt4 book ai didi

c# - C# 中两个几乎相同的 Web 引用的接口(interface)

转载 作者:太空宇宙 更新时间:2023-11-03 11:21:17 25 4
gpt4 key购买 nike

我有 2 个无法更改的 Web 引用:

它们几乎相同,但引用时,一个只接受ProperCase,另一个Uppercamelcase

例子

不仅 props 是重要的,而且整个类都有它的 props 和方法

@EDIT:抱歉,我意识到它比最初所说的要复杂:

不仅 props 是关键,整个类及其 props 和方法和内部类也是如此。尽管只用作结构,内部类也有同样的问题

public class Foobar
{
public string Logmsgno;
public string Revno;
public string Reqsox;
public void Dosomething();
public Barbaz Mybarbaz;
public List<quux> Myquuxlist;
}

还有一个名字像

public class FooBar
{
public string LogMsgNo;
public string RevNo;
public string ReqSox;
public void DoSomething();
public BarBaz MyBarBaz;
public List<Quux> MyQuuxList;
}

有没有一种简单的方法可以为两者创建一个接口(interface)?

TIA!

最佳答案

如果没有适当的重构来更新所有内容和更改名称,是的,您可能会蒙混过关。根据您希望它们成为的新值创建一个接口(interface),然后将它们更改为分别使用 getter/setter 来保留原始值而不破坏它。

从您的扩展问题进行扩展。您还必须调整每个级别。为“Barbaz”和“BarBaz”类定义一个接口(interface),以便你的外部类可以有一个对象

public interface IYourBarBazInterface
{
string BarBazProp1 { get; set; }
string AnotherProp { get; set; }
}

public interface IQuux
{
int QuuxProp { get; set; }
string AnotherQuuxProp { get; set; }
}

public interface IYourCommonInterface
{
string LogMsgNo { get; set; };
string RevNo { get; set; };
string ReqSox { get; set; };

// Similar principle of declarations, but interface typed objects
IYourBarBazInterface MyBarBaz { get; set; }
List<IQuux> MyQuuxList;
void DoSomething();
}



public class Foobar : IYourCommonInterface
{
public string Logmsgno;
public string Revno;
public string Reqsox;
public void Dosomething();

// your existing old versions keep same name context
// but showing each of their respective common "interfaces"
public IYourBarBazInterface mybarbaz;
public List<IQuux> myQuuxlist = new List<IQuux>();


// these are the implementations of the interface...
public string LogMsgNo
{ get { return Logmsgno; }
set { Logmsgno = value; }
}

public string RevNo
{ get { return Revno; }
set { Revno = value; }
}

public string ReqSox
{ get { return Reqsox; }
set { Reqsox = value; }
}

public void DoSomething()
{ Dosomething(); }

// Now, the publicly common Interface of the "IYourCommonInterface"
// that identify the common elements by common naming constructs.
// similar in your second class.
public IYourBarBazInterface MyBarBaz
{ get { return mybarbaz; }
set { mybarbaz = value; }
}

public List<IQuux> MyQuuxList
{ get { return myQuuxlist; }
set { myQuuxlist = value; }
}
}


public class FooBar : IYourCommonInterface
{
// since THIS version has the proper naming constructs you want,
// change the original properties to lower case start character
// so the interface required getter/setter will be properly qualified

public string logMsgNo;
public string revNo;
public string reqSox;

public IYourBarBazInterface MyBarbaz;
public List<IQuux> Myquuxlist;



// these are the implementations of the interface...
public string LogMsgNo
{ get { return logMsgMo; }
set { logMsgNo = value; }
}

public string RevNo
{ get { return revNo; }
set { revNo = value; }
}

public string ReqSox
{ get { return reqSox; }
set { reqSox = value; }
}


// Since your "DoSomething()" method was already proper case-sensitive
// format, you can just leave THIS version alone
public void DoSomething()
{ .. do whatever .. }



public IYourBarBazInterface MyBarBaz
{ get { return MyBarbaz; }
set { MyBarbaz = value; }
}

public List<IQuux> MyQuuxList
{ get { return myquuxlist; }
set { myquuxlist = value; }
}

}

关于c# - C# 中两个几乎相同的 Web 引用的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10900301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com