所以,我想听听大家对此的看法.
我有一个项目,其中三个不同的继承路径需要全部实现另一个基类.这将是多重继承,在C#中是不允许的.我很好奇如何在没有代码重复的情况下实现这一点.
编辑:我不拥有这三个班级.这三个类来自第三方代码.所以我不能让它们都扩展我的基类.
现在我使用三个不同的类,每个类扩展一个不同的基类.然后我在三个抽象类中的每一个中都有相同的代码.
我可以使用单个界面,但我仍然需要复制代码.
我可以创建一些实现代码的静态类,然后在3个抽象类中的每一个中引用它.它会消除重复,但是,我不确定我对此的看法.我可以在接口上实现Extensions方法,但接口本身将是空的,扩展方法(包含重复的代码)将在一个完全不同的文件中,这似乎不太正确.另外,我无法在扩展方法中实现属性...
如何在这里分解代码重复?
编辑,继承树:
class Class1 : 3rdPartyBaseClass1 { }
class Class2 : 3rdPartyBaseClass2 { }
class Class3 : 3rdPartyBaseClass3 { }
Run Code Online (Sandbox Code Playgroud)
我有代码,我想要在上面的每个类中,但我不能将它添加到3rdPartyClasses.
c# inheritance refactoring design-patterns multiple-inheritance
使用linq查询/方法chainging我希望只选择Point.X排序的List中的前2个Point对象.我怎么能够?
当我用这个
#include<time.h>
//...
int n = time(0);
//...
Run Code Online (Sandbox Code Playgroud)
我收到关于将时间转换为int的警告.有没有办法删除此警告?
我有一个程序(特别是我的SO DevDays倒计时应用挑战的入口),它依赖于几个动态库,即libSDL,libSDL_ttf等.我/opt/local/lib通过MacPorts 安装了这些库,许多人不会安装这些库(有些人可能已经安装了这些库,但是没有安装它们).
如何分发我的程序,以便没有安装这些库的人可以开箱即用?显然我将不得不分发各种.dylib文件,但这样做是不够的.动态加载程序仍然会查找安装在我安装的位置的库.有没有办法告诉动态加载器查看可执行文件的当前目录,比如Windows对DLL的作用?人们不应该修改任何环境变量(例如DYLD_LIBRARY_PATH),因为我再次希望这可以开箱即用.
我做了一个jquery .ajax调用,我期待一个json结果.问题是,如果有5位作者,我会得到author_details_0,author_details_1,author_details_2等等.我怎样才能动态构造要从json中检索的变量的名称?我不知道我会得到多少作者,可能有数百名.
$.ajax({
type: "POST",
url: "/authordetails/show_my_details/",
data: af_pTempString,
dataType: "json",
beforeSend: function() {
},
success: function(jsonData) {
console.log("Incoming from backend : " + jsonData.toSource());
if(jsonData.AuthorCount)
{
console.log("Number of Authors : " + jsonData.AuthorCount);
for (i = 0; i < jsonData.AuthorCount; i++)
{
temp = 'author_details_' + i; <-------------------This is the name of the variable I'm expecting.
console.log("Farm information : " + eval(jsonData.temp) ); <----- This doesn't work, how can I get jsonData.author_details_2 for example, 'coz I don't know how …Run Code Online (Sandbox Code Playgroud) 我对DNSServiceRegister具有以下声明:
function DNSServiceRegister
(
var sdRef: TDNSServiceRef;
const flags: TDNSServiceFlags;
const interfaceIndex: uint32_t;
const name: PUTF8String; //* may be NULL */
const regType: PUTF8String;
const domain: PUTF8String; //* may be NULL */
const host: PUTF8String; //* may be NULL */
const port: uint16_t;
const txtLen: uint16_t;
const txtRecord: Pointer; //* may be NULL */
const callBack: TDNSServiceRegisterReply; //* may be NULL */
const context: Pointer //* may be NULL */
): TDNSServiceErrorType; stdcall; external DNSSD_DLL;
Run Code Online (Sandbox Code Playgroud)
在我的Bonjour框架中,对于已启用的已宣布服务(即实际上开始通过Bonjour宣布自身),我有以下响应:
procedure TAnnouncedService.Activate;
var
flags: …Run Code Online (Sandbox Code Playgroud) 我刚刚开始尝试DotNetOpenAuth项目.修改示例OpenIdRelyingPartyMvc项目,我能够获得一个ClaimRequest用于与Google合作的电子邮件.
但是,当我尝试将OpenID添加到我自己的项目时,ClaimResponse总是返回null.我想知道是否存在我缺少的项目或环境设置?
这是我的Authenticate方法:
public ActionResult Authenticate(string returnUrl)
{
var response = openid.GetResponse();
if (response == null)
{
// Stage 2: user submitting Identifier
Identifier id;
if (Identifier.TryParse(Request.Form["openid_identifier"], out id))
{
try
{
IAuthenticationRequest req = openid.CreateRequest(Request.Form["openid_identifier"]);
req.AddExtension(new ClaimsRequest { Email = DemandLevel.Require });
return req.RedirectingResponse.AsActionResult();
}
catch (ProtocolException ex)
{
ViewData["Message"] = ex.Message;
return View("Login");
}
}
else
{
ViewData["Message"] = "Invalid identifier";
return View("Login");
}
}
else
{
// Stage 3: …Run Code Online (Sandbox Code Playgroud) 我的视觉工作室现在正在使用utf-8保存文件.我如何配置visual studio来保存它iso-8859-1?
c# ×2
.net ×1
asp.net-mvc ×1
bonjour ×1
c++ ×1
delphi ×1
delphi-2009 ×1
dyld ×1
dynamic ×1
inheritance ×1
interpreter ×1
javascript ×1
jquery ×1
json ×1
linq ×1
macos ×1
python ×1
refactoring ×1
system-calls ×1
time ×1
time.h ×1
variables ×1
warnings ×1
zeroconf ×1