假设我有两个.dll,Dll1和Dll2.
DLL1使用或调用DLL2.
有没有办法可以确保它是DLL1,只有DLL1谁调用DLL2?
更新1
这背后的原因是:
我有一个WinForms解决方案,为了简单起见,它包含一个视图项目和一个控制器项目(生成一个单独的.dll).在客户端计算机上安装应用程序后,我意识到可以在其"Program Files"文件夹中查看应用程序.dll.有人可能会添加对控制器的.dll的引用.我想避免这种情况,因此它是视图项目,只有正在进行调用的视图项目.
更新2
我喜欢将控制器分成单独项目的原因之一是我可能有许多不同的视图项目调用并使用相同的控制器.然后,我只需要为所有视图维护一个控制器项目.例如,win表单应用程序和测试项目甚至是使用相同控制器项目的网站.但是采用这种方法,我将面临我提到的安全问题(避免和控制我的dll的不当使用).
所以我有一种方法,编译为一个.dll,使用不同的文件夹,我认为这是正确的并解决了我的安全问题,但它让我只有一个视图.
另一方面,如果我有单独的项目,我面临安全问题.
我仍然怀疑我应该怎么做,因为我仍然希望继续使用不同的项目,因为我提到的原因.
更新3
有关使用StrongNameIdentityPermission权限要求的任何建议吗?
http://msdn.microsoft.com/en-us/library/ff648663.aspx (请参阅:限制哪些代码可以调用您的代码)
http://blogs.msmvps.com/manoj/2004/10/20/tip- strongnameidentitypermission/ http://www.morganskinner.com/Articles/StrongNameIdentityPermission/
谢谢
如果我有一个通用约束,其中C必须是一个结构:
class MyNum<C> where C : struct
{
C a;
public MyNum(C a)
{
this.a = a;
}
}
struct myStruct
{
public int a;
}
Run Code Online (Sandbox Code Playgroud)
我明白这个编译:
myStruct n = new myStruct();
n.a = 5;
MyNum<myStruct> str = new MyNum<myStruct>(n);
Run Code Online (Sandbox Code Playgroud)
但为什么这会编译.¿5号是一个结构吗?
我想这样做:
int b = 5;
Run Code Online (Sandbox Code Playgroud)
b的类型为int,但不是struct struct.我想我在这里遗漏了一些东西.
也只是使用正确的术语:
int b = 5;
Run Code Online (Sandbox Code Playgroud)
我实例化b?创建一个int实例?出于某些原因,当我想到"实例"时,我会想到引用类型.
这里:
Car c1 = new Car();
Run Code Online (Sandbox Code Playgroud)
在这里,我理解我正在创建一个Car实例或实例化c1.
我可以从客户端消息检查器引用代理客户端实例吗?
原因是,我想访问以下属性的值:
ClientCredentials.UserName.UserName
ClientCredentials.UserName.Password
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在尝试使用LINQ
's cast
方法来array of strings
转换为array of integers
但是得到错误:Specified cast is not valid
我做错了什么?谢谢!
string numbers = "1,2,3,4,5";
string[] nums = numbers.Split(',');
try
{
var ff = nums.Cast<int>().ToArray();
}
catch (Exception ex)
{
}
Run Code Online (Sandbox Code Playgroud)