我正在尝试掌握.NET Generics的概念,并在我自己的代码中实际使用它们,但我一直遇到问题.
有人可以尝试向我解释为什么以下设置无法编译?
public class ClassA
{
ClassB b = new ClassB();
public void MethodA<T>(IRepo<T> repo) where T : ITypeEntity
{
b.MethodB(repo);
}
}
public class ClassB
{
IRepo<ITypeEntity> repo;
public void MethodB(IRepo<ITypeEntity> repo)
{
this.repo = repo;
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
无法从IRepo <'T>转换为IRepo <'ITypeEntity>
使用IRepo <'DetailType>对象参数调用MethodA,其中DetailType继承自ITypeEntity.
我一直认为这应该编译,因为我将MethodA中的T限制为ITypeEntity类型.
任何想法或反馈都会非常有帮助.
谢谢.
编辑:尼克R有一个很好的建议,但不幸的是在我的背景下,我没有选择制作ClassA Generic.但是ClassB可能会.
JavaScript允许将函数视为对象 - 如果首先将变量定义为函数,则可以随后向该函数添加属性.你如何反过来,并为"对象"添加一个功能?
这有效:
var foo = function() { return 1; };
foo.baz = "qqqq";
Run Code Online (Sandbox Code Playgroud)
此时,foo()调用该函数,并foo.baz具有值"qqqq".
但是,如果首先执行属性赋值部分,那么如何随后将函数赋值给变量?
var bar = { baz: "qqqq" };
Run Code Online (Sandbox Code Playgroud)
我现在可以做什么来安排bar.baz值"qqqq" 并 bar()调用该函数?
我使用RSA算法进行加密/解密,为了解密文件,你必须处理一些非常大的值.更具体地说,像
P = C^d % n
= 62^65 % 133
Run Code Online (Sandbox Code Playgroud)
现在这真的是唯一不适当的计算.我尝试过使用Matt McCutchen的BigInteger库,但是在链接过程中我遇到了很多编译错误,例如:
encryption.o(.text+0x187):encryption.cpp: undefined reference to `BigInteger::BigInteger(int)'
encryption.o(.text+0x302):encryption.cpp: undefined reference to `operator<<(std::ostream&, BigInteger const&)'
encryption.o(.text$_ZNK10BigIntegermlERKS_[BigInteger::operator*(BigInteger const&) const]+0x63):encryption.cpp: undefined reference to `BigInteger::multiply(BigInteger const&, BigInteger const&)'
Run Code Online (Sandbox Code Playgroud)
所以我想知道处理RSA算法产生的真正大整数的最佳方法是什么.
我听说有可能将你的变量声明为双倍长,所以......
long long decryptedCharacter;
Run Code Online (Sandbox Code Playgroud)
但我不确定可以存储多大的整数.
好吧,例如,我尝试使用dev C++编译并运行以下程序:
#include iostream
#include "bigint\BigIntegerLibrary.hh"
using namespace std;
int main()
{
BigInteger a = 65536;
cout << (a * a * a * a * a * a * a * a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然后我得到了那些错误.
Derek,我认为通过包含BigIntegerLibrary.hh文件,编译器会经历并编译它将使用的所有必要文件. …
我不确定这是否是一件奇怪的事情,或者是否有一些代码闻起来...但我想知道是否有某种方式(某种oop模式会很好)来"施放"基类型到其派生类型的形式.我知道这没有多大意义,因为派生类型将具有父级不提供的附加功能,这在其本身并非基本健全.但有没有办法做到这一点?这是一个代码示例,以便我可以更好地解释我在问什么.
public class SomeBaseClass {
public string GetBaseClassName {get;set;}
public bool BooleanEvaluator {get;set;}
}
public class SomeDerivedClass : SomeBaseClass {
public void Insert(SqlConnection connection) {
//...random connection stuff
cmd.Parameters["IsItTrue"].Value = this.BooleanEvalutar;
//...
}
}
public static void Main(object[] args) {
SomeBaseClass baseClass = new SomeBaseClass();
SomeDerivedClass derClass = (SomeDerivedClass)baseClass;
derClass.Insert(new sqlConnection());
}
Run Code Online (Sandbox Code Playgroud)
我知道这似乎很傻,但有没有办法完成这种事情?
虽然我的问题可能看似抽象,但我希望不是.假设我开发了一个应用程序,一个ASP.NET MVC站点,后来我的任务是为这个应用程序构建一个Winforms客户端,从现有应用程序中重用多少以及如何重用?
我定义了模型,我定义了控制器和视图.他们都运作良好.
现在老板要求Winforms客户端,我希望我可以重用模型和控制器(假设我把它们放在不同的程序集中)而不是只重用视图(ASPX视图).
可以这样做吗?怎么样?
我需要递归搜索目录并将所有文件中的字符串(例如http:// development:port/URI)替换为另一个字符串(例如http:// production:port/URI).有人可以帮忙吗?
如果该脚本可以打印出它修改的文件并将搜索/替换模式作为输入参数,那会好得多.
问候.
我在Excel工作簿中有一个嵌入式PowerPoint演示文稿.如何使用VBA编辑(打开,复制幻灯片,向幻灯片添加数据,关闭)?
我一直在欣赏StackOverflow的默认被子般的个人资料图片(我注意到它也在失败的博客上),我很好奇什么程序都用来生成它们.
但我真正想知道的是:如果你要设计系统来创建默认的个人资料图片,你会怎么做?
我正在寻找关于你使用什么算法的想法,以及诸如如何将图像与用户相关联,与用户名相关或者他们的进展的一些描述(即图像变得更复杂,或更大,因为他们获得声誉).
我在Server 2008上运行我的工作站,在该服务器上运行Hyper-V VM中的一些服务器.我使用来自主操作系统(主机)的VPN连接到我的公司LAN,但我的VM没有看到公司LAN中的服务器.互联网和本地访问我的家庭网络工作正常.每个VM都有一个虚拟网络适配器.
我该怎么做才能让它发挥作用?
也许我需要提供更多细节,如果需要请询问.
更多细节:
c# ×2
.net ×1
algorithm ×1
asp.net-mvc ×1
asynchronous ×1
biginteger ×1
c++ ×1
connectivity ×1
excel ×1
excel-vba ×1
function ×1
generics ×1
hyper-v ×1
identicon ×1
inheritance ×1
integer ×1
javascript ×1
networking ×1
oop ×1
powerpoint ×1
properties ×1
refactoring ×1
regex ×1
reusability ×1
rsa ×1
scripting ×1
vba ×1
windows ×1
winforms ×1